mockkernel.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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.ИСлог // Двойной логер
  20. }
  21. // NewMockKernel -- возвращает новый *MockKernel
  22. func NewMockKernel() types.ИЯдро {
  23. сам := &MockKernel{
  24. ctxBg: context.Background(),
  25. wg: wgname.NewWgName(),
  26. }
  27. сам.ctxApp, сам.fnCancel = context.WithCancel(сам.ctxBg)
  28. return сам
  29. }
  30. // Хранилище -- возвращает хранилище данных
  31. func (сам *MockKernel) Хранилище() types.ИХранилище {
  32. return nil
  33. }
  34. // Wg -- возвращает объект групповой сихнронизации
  35. func (сам *MockKernel) Wg() types.IWgName {
  36. return сам.wg
  37. }
  38. // Контекст -- возвращает глобальный контекст приложения
  39. func (сам *MockKernel) Контекст() context.Context {
  40. return сам.ctxApp
  41. }
  42. // Done -- возвращает канал отмены контекста приложения
  43. func (сам *MockKernel) Done() <-chan struct{} {
  44. return сам.ctxApp.Done()
  45. }
  46. // Отменить -- отменяет глобальный контекст приложения
  47. func (сам *MockKernel) Отменить() {
  48. // fmt._rintf("MockKernel.CancelApp()\n")
  49. сам.fnCancel()
  50. }
  51. // Слог -- возвращает хранимый логгер
  52. func (сам *MockKernel) Слог() types.ИСлог {
  53. return сам.Slog_
  54. }