arena_context.go 2.7 KB

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