package mockkernel import ( "context" "wartank/pkg/components/kernel/wgname" "wartank/pkg/types" ) /* Мок-объект для имитации объекта ядра приложения. Нужен из-за возникающей циклической ссылки. ВНИМАНИЕ!!!!! Slog_ присваивать руками !!!! */ // MockKernel -- мок-объект ядра приложения type MockKernel struct { ctxBg context.Context // Глобальный неотменяемый контекст приложения ctxApp context.Context // глобальный отменяемый контекст приложения fnCancel func() // Функия глобальной отмены контекста приложения wg *wgname.WgName // Объект группового ожидания Slog_ types.ISlog // Двойной логер } // NewMockKernel -- возвращает новый *MockKernel func NewMockKernel() *MockKernel { сам := &MockKernel{ ctxBg: context.Background(), wg: wgname.NewWgName(), } сам.ctxApp, сам.fnCancel = context.WithCancel(сам.ctxBg) return сам } // Wg -- возвращает объект групповой сихнронизации func (сам *MockKernel) Wg() types.IWgName { return сам.wg } // CtxApp -- возвращает глобальный контекст приложения func (сам *MockKernel) CtxApp() context.Context { return сам.ctxApp } // Done -- возвращает канал отмены контекста приложения func (сам *MockKernel) Done() <-chan struct{} { return сам.ctxApp.Done() } // CancelApp -- отменяет глобальный контекст приложения func (сам *MockKernel) CancelApp() { // fmt._rintf("MockKernel.CancelApp()\n") сам.fnCancel() } // Slog -- возвращает хранимый логгер func (сам *MockKernel) Slog() types.ISlog { return сам.Slog_ }