| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- // package arena_context -- контекст арены
- package arena_context
- import (
- "context"
- . "gitp78su.ipnodns.ru/svi/kern"
- . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
- . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
- "wartank/app/lev0/alias"
- . "wartank/app/lev0/types"
- "wartank/app/lev1/web_log"
- "wartank/app/lev2/arena/arena_context/arena_state"
- )
- // АренаКонтекст -- контекст арены
- type АренаКонтекст struct {
- бот ИБот
- аренаИмя alias.ААренаИмя
- кнт context.Context
- фнОтмена func()
- состояние ИАренаСостояние
- вЛог ИВебЛог
- лог ILogBuf
- }
- // НовАренаКонтекст -- возвращает новый контекст арены
- func НовАренаКонтекст(конт ILocalCtx, сценаИмя alias.ААренаИмя) *АренаКонтекст {
- Hassert(сценаИмя != "", "НовАренаКонтекст(): сценаИмя не задано")
- Hassert(конт != nil, "НовАренаКонтекст(): ИЯдроКонтекст==пусто")
- лог := NewLogBuf()
- лог.Info("НовАренаКонтекст() " + string(сценаИмя) + "\n")
- кнт, фнОтмена := context.WithCancel(конт.Ctx())
- сам := &АренаКонтекст{
- бот: конт.Get("бот").Val().(ИБот),
- аренаИмя: сценаИмя,
- кнт: кнт,
- фнОтмена: фнОтмена,
- состояние: arena_state.НовАренаСостояние(),
- вЛог: web_log.НовВебЛог(true),
- лог: лог,
- }
- _ = ИАренаКонтекст(сам)
- return сам
- }
- // Лог -- возвращает лог арены
- func (сам *АренаКонтекст) ВебЛог() ИВебЛог {
- return сам.вЛог
- }
- // АренаСостояние -- состояние арены
- func (сам *АренаКонтекст) Состояние() ИАренаСостояние {
- return сам.состояние
- }
- // Отменить -- отменяет контекст арены
- func (сам *АренаКонтекст) Отменить() {
- сам.фнОтмена()
- }
- // Кнт -- возвращает контекст арены
- func (сам *АренаКонтекст) Контекст() context.Context {
- return сам.кнт
- }
- // Имя -- возвращает имя арены
- func (сам *АренаКонтекст) Имя() alias.ААренаИмя {
- return сам.аренаИмя
- }
- // Бот -- возвращает бота сцены
- func (сам *АренаКонтекст) Бот() ИБот {
- return сам.бот
- }
|