arena_context.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // package arena_context -- контекст арены
  2. package arena_context
  3. import (
  4. "context"
  5. "wartank/pkg/alias"
  6. "wartank/pkg/arena/arena_context/arena_state"
  7. "wartank/pkg/components/web_log"
  8. . "wartank/pkg/kernel/kernel_types"
  9. "wartank/pkg/kernel/logger"
  10. . "wartank/server/lev0/types"
  11. )
  12. // АренаКонтекст -- контекст арены
  13. type АренаКонтекст struct {
  14. бот ИБот
  15. аренаИмя alias.АренаИмя
  16. кнт context.Context
  17. фнОтмена func()
  18. состояние ИАренаСостояние
  19. вЛог ИВебЛог
  20. лог ИЛоггер
  21. }
  22. // НовАренаКонтекст -- возвращает новый контекст арены
  23. func НовАренаКонтекст(бот ИБот, сценаИмя alias.АренаИмя) *АренаКонтекст {
  24. лог := logger.НовЛоггер("АренаКонтекст " + string(сценаИмя))
  25. лог.Инфо("НовАренаКонтекст() " + string(сценаИмя) + "\n")
  26. лог.Паника(бот == nil, "НовАренаКонтекст(): ИБот==nil")
  27. лог.Паника(сценаИмя == "", "НовАренаКонтекст(): сценаИмя не задано")
  28. кнт, фнОтмена := context.WithCancel(бот.Контекст())
  29. сам := &АренаКонтекст{
  30. бот: бот,
  31. аренаИмя: сценаИмя,
  32. кнт: кнт,
  33. фнОтмена: фнОтмена,
  34. состояние: arena_state.НовАренаСостояние(),
  35. вЛог: web_log.НовВебЛог(true),
  36. лог: лог,
  37. }
  38. _ = ИАренаКонтекст(сам)
  39. return сам
  40. }
  41. // Лог -- возвращает лог арены
  42. func (сам *АренаКонтекст) ВебЛог() ИВебЛог {
  43. return сам.вЛог
  44. }
  45. // АренаСостояние -- состояние арены
  46. func (сам *АренаКонтекст) АренаСостояние() ИАренаСостояние {
  47. return сам.состояние
  48. }
  49. // Отмена -- отменяет контекст арены
  50. func (сам *АренаКонтекст) Отмена() {
  51. сам.фнОтмена()
  52. }
  53. // Кнт -- возвращает контекст арены
  54. func (сам *АренаКонтекст) Контекст() context.Context {
  55. return сам.кнт
  56. }
  57. // Имя -- возвращает имя арены
  58. func (сам *АренаКонтекст) Имя() alias.АренаИмя {
  59. return сам.аренаИмя
  60. }
  61. // Бот -- возвращает бота сцены
  62. func (сам *АренаКонтекст) Бот() ИБот {
  63. return сам.бот
  64. }