mockkernel.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package mockkernel
  2. import (
  3. "context"
  4. "wartank/pkg/components/kernel/wgname"
  5. "wartank/pkg/types"
  6. )
  7. /*
  8. Мок-объект для имитации объекта ядра приложения.
  9. Нужен из-за возникающей циклической ссылки.
  10. ВНИМАНИЕ!!!!!
  11. Slog_ присваивать руками !!!!
  12. */
  13. // MockKernel -- мок-объект ядра приложения
  14. type MockKernel struct {
  15. ctxBg context.Context // Глобальный неотменяемый контекст приложения
  16. ctxApp context.Context // глобальный отменяемый контекст приложения
  17. fnCancel func() // Функия глобальной отмены контекста приложения
  18. wg *wgname.WgName // Объект группового ожидания
  19. Slog_ types.ISlog // Двойной логер
  20. }
  21. // NewMockKernel -- возвращает новый *MockKernel
  22. func NewMockKernel() *MockKernel {
  23. сам := &MockKernel{
  24. ctxBg: context.Background(),
  25. wg: wgname.NewWgName(),
  26. }
  27. сам.ctxApp, сам.fnCancel = context.WithCancel(сам.ctxBg)
  28. return сам
  29. }
  30. // Wg -- возвращает объект групповой сихнронизации
  31. func (сам *MockKernel) Wg() types.IWgName {
  32. return сам.wg
  33. }
  34. // CtxApp -- возвращает глобальный контекст приложения
  35. func (сам *MockKernel) CtxApp() context.Context {
  36. return сам.ctxApp
  37. }
  38. // Done -- возвращает канал отмены контекста приложения
  39. func (сам *MockKernel) Done() <-chan struct{} {
  40. return сам.ctxApp.Done()
  41. }
  42. // CancelApp -- отменяет глобальный контекст приложения
  43. func (сам *MockKernel) CancelApp() {
  44. // fmt._rintf("MockKernel.CancelApp()\n")
  45. сам.fnCancel()
  46. }
  47. // Slog -- возвращает хранимый логгер
  48. func (сам *MockKernel) Slog() types.ISlog {
  49. return сам.Slog_
  50. }