// 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 сам.бот }