arena_context.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // package arena_context -- контекст арены
  2. package arena_context
  3. import (
  4. "context"
  5. . "gitp78su.ipnodns.ru/svi/kern"
  6. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  7. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  8. "wartank/app/lev0/alias"
  9. . "wartank/app/lev0/types"
  10. "wartank/app/lev1/web_log"
  11. "wartank/app/lev2/arena/arena_context/arena_state"
  12. )
  13. // АренаКонтекст -- контекст арены
  14. type АренаКонтекст struct {
  15. бот ИБот
  16. аренаИмя alias.ААренаИмя
  17. кнт context.Context
  18. фнОтмена func()
  19. состояние ИАренаСостояние
  20. вЛог ИВебЛог
  21. лог ILogBuf
  22. }
  23. // НовАренаКонтекст -- возвращает новый контекст арены
  24. func НовАренаКонтекст(конт ILocalCtx, бот ИБот, сценаИмя alias.ААренаИмя) *АренаКонтекст {
  25. Hassert(бот != nil, "НовАренаКонтекст(): ИБот==nil")
  26. Hassert(сценаИмя != "", "НовАренаКонтекст(): сценаИмя не задано")
  27. Hassert(конт != nil, "НовАренаКонтекст(): ИЯдроКонтекст==пусто")
  28. лог := NewLogBuf()
  29. лог.Info("НовАренаКонтекст() " + string(сценаИмя) + "\n")
  30. кнт, фнОтмена := context.WithCancel(бот.КонтБот().Ctx())
  31. сам := &АренаКонтекст{
  32. бот: бот,
  33. аренаИмя: сценаИмя,
  34. кнт: кнт,
  35. фнОтмена: фнОтмена,
  36. состояние: arena_state.НовАренаСостояние(),
  37. вЛог: web_log.НовВебЛог(true),
  38. лог: лог,
  39. }
  40. _ = ИАренаКонтекст(сам)
  41. return сам
  42. }
  43. // Лог -- возвращает лог арены
  44. func (сам *АренаКонтекст) ВебЛог() ИВебЛог {
  45. return сам.вЛог
  46. }
  47. // АренаСостояние -- состояние арены
  48. func (сам *АренаКонтекст) АренаСостояние() ИАренаСостояние {
  49. return сам.состояние
  50. }
  51. // Отменить -- отменяет контекст арены
  52. func (сам *АренаКонтекст) Отменить() {
  53. сам.фнОтмена()
  54. }
  55. // Кнт -- возвращает контекст арены
  56. func (сам *АренаКонтекст) Контекст() context.Context {
  57. return сам.кнт
  58. }
  59. // Имя -- возвращает имя арены
  60. func (сам *АренаКонтекст) Имя() alias.ААренаИмя {
  61. return сам.аренаИмя
  62. }
  63. // Бот -- возвращает бота сцены
  64. func (сам *АренаКонтекст) Бот() ИБот {
  65. return сам.бот
  66. }