// package mod_serv -- главный тип приложения, содержит бота, интерфейсы и т.п. package mod_serv import ( "time" . "gitp78su.ipnodns.ru/svi/kern" . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes" . "wartank/app/lev0/types" "wartank/app/lev3/farm_bots" "wartank/app/lev3/serv_web" "wartank/app/lev3/server_stat" ) // МодульСервер -- главный тип приложения type МодульСервер struct { IKernelModule конт IKernelCtx ботоФерма *farm_bots.БотоФерма сервСтат ИСерверСтат лог ILogBuf } // НовМодСервер -- возвращает новый модуль сервера func НовМодСервер() *МодульСервер { лог := NewLogBuf() лог.Info("НовМодСервер()\n") конт := GetKernelCtx() сам := &МодульСервер{ конт: конт, IKernelModule: NewKernelModule("мод_сервер"), лог: лог, } конт.Set("мод_сервер", сам, "Модуль сервера WarBot") _ = GetKernelStoreKv() сам.ботоФерма = farm_bots.НовБотоФерма() сервВеб := serv_web.НовСервВеб() сам.Ctx().Set("сервВеб", сервВеб, "Веб-сервер модуля сервера") сам.сервСтат = server_stat.НовСерверСтат() сам.Ctx().Set("сервСтат", сам.сервСтат, "Статистика сервера") _ = ИПриложение(сам) return сам } // Пуск -- запускает сервер бота в работу func (сам *МодульСервер) Run() { сам.лог.Info("МодульСервер.Пуск()\n") go сам.пуск() } func (сам *МодульСервер) пуск() { time.Sleep(time.Minute * 20) сам.конт.Cancel() сам.конт.Wg().Wait() } // Стат -- возвращает статистику сервера func (сам *МодульСервер) Стат() ИСерверСтат { return сам.сервСтат } // ServBots -- возвращает словарь ботов func (сам *МодульСервер) ServBots() ИБотоФерма { return сам.ботоФерма }