arena_context.go 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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(сценаИмя != "", "НовАренаКонтекст(): сценаИмя не задано")
  26. Hassert(конт != nil, "НовАренаКонтекст(): ИЯдроКонтекст==пусто")
  27. лог := NewLogBuf()
  28. лог.Info("НовАренаКонтекст() " + string(сценаИмя) + "\n")
  29. кнт, фнОтмена := context.WithCancel(конт.Ctx())
  30. сам := &АренаКонтекст{
  31. бот: конт.Get("бот").Val().(ИБот),
  32. аренаИмя: сценаИмя,
  33. кнт: кнт,
  34. фнОтмена: фнОтмена,
  35. состояние: arena_state.НовАренаСостояние(),
  36. вЛог: web_log.НовВебЛог(true),
  37. лог: лог,
  38. }
  39. _ = ИАренаКонтекст(сам)
  40. return сам
  41. }
  42. // Лог -- возвращает лог арены
  43. func (сам *АренаКонтекст) ВебЛог() ИВебЛог {
  44. return сам.вЛог
  45. }
  46. // АренаСостояние -- состояние арены
  47. func (сам *АренаКонтекст) Состояние() ИАренаСостояние {
  48. return сам.состояние
  49. }
  50. // Отменить -- отменяет контекст арены
  51. func (сам *АренаКонтекст) Отменить() {
  52. сам.фнОтмена()
  53. }
  54. // Кнт -- возвращает контекст арены
  55. func (сам *АренаКонтекст) Контекст() context.Context {
  56. return сам.кнт
  57. }
  58. // Имя -- возвращает имя арены
  59. func (сам *АренаКонтекст) Имя() alias.ААренаИмя {
  60. return сам.аренаИмя
  61. }
  62. // Бот -- возвращает бота сцены
  63. func (сам *АренаКонтекст) Бот() ИБот {
  64. return сам.бот
  65. }