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 { sf := &MockKernel{ ctxBg: context.Background(), wg: wgname.NewWgName(), } sf.ctxApp, sf.fnCancel = context.WithCancel(sf.ctxBg) return sf } // Wg -- возвращает объект групповой сихнронизации func (sf *MockKernel) Wg() types.IWgName { return sf.wg } // CtxApp -- возвращает глобальный контекст приложения func (sf *MockKernel) CtxApp() context.Context { return sf.ctxApp } // Done -- возвращает канал отмены контекста приложения func (sf *MockKernel) Done() <-chan struct{} { return sf.ctxApp.Done() } // CancelApp -- отменяет глобальный контекст приложения func (sf *MockKernel) CancelApp() { // fmt._rintf("MockKernel.CancelApp()\n") sf.fnCancel() } // Slog -- возвращает хранимый логгер func (sf *MockKernel) Slog() types.ISlog { return sf.Slog_ }