// package arena_context -- контекст арены package arena_context import ( "context" "wartank/pkg/alias" "wartank/pkg/arena/arena_context/arena_state" "wartank/pkg/components/web_log" . "wartank/pkg/kernel/kernel_types" "wartank/pkg/kernel/logger" . "wartank/server/lev0/types" ) // АренаКонтекст -- контекст арены type АренаКонтекст struct { бот ИБот аренаИмя alias.АренаИмя кнт context.Context фнОтмена func() состояние ИАренаСостояние вЛог ИВебЛог лог ИЛоггер } // НовАренаКонтекст -- возвращает новый контекст арены func НовАренаКонтекст(бот ИБот, сценаИмя alias.АренаИмя) *АренаКонтекст { лог := logger.НовЛоггер("АренаКонтекст " + string(сценаИмя)) лог.Инфо("НовАренаКонтекст() " + string(сценаИмя) + "\n") лог.Паника(бот == nil, "НовАренаКонтекст(): ИБот==nil") лог.Паника(сценаИмя == "", "НовАренаКонтекст(): сценаИмя не задано") кнт, фнОтмена := context.WithCancel(бот.Контекст()) сам := &АренаКонтекст{ бот: бот, аренаИмя: сценаИмя, кнт: кнт, фнОтмена: фнОтмена, состояние: arena_state.НовАренаСостояние(), вЛог: web_log.НовВебЛог(true), лог: лог, } _ = ИАренаКонтекст(сам) return сам } // Лог -- возвращает лог арены func (сам *АренаКонтекст) ВебЛог() ИВебЛог { return сам.вЛог } // АренаСостояние -- состояние арены func (сам *АренаКонтекст) АренаСостояние() ИАренаСостояние { return сам.состояние } // Отмена -- отменяет контекст арены func (сам *АренаКонтекст) Отмена() { сам.фнОтмена() } // Кнт -- возвращает контекст арены func (сам *АренаКонтекст) Контекст() context.Context { return сам.кнт } // Имя -- возвращает имя арены func (сам *АренаКонтекст) Имя() alias.АренаИмя { return сам.аренаИмя } // Бот -- возвращает бота сцены func (сам *АренаКонтекст) Бот() ИБот { return сам.бот }