// package server -- главный тип приложения, содержит бота, интерфейсы и т.п. package server import ( "fmt" "wartank/pkg/components/kernel" "wartank/pkg/types" "wartank/server/serv_bots" "wartank/server/serv_web" "wartank/server/server_stat" ) // Сервер -- главный тип приложения type Сервер struct { types.ИЯдро ботоФерма *serv_bots.БотоФерма сервВеб *serv_web.СервВеб сервСтат types.ИСерверСтат } // НовСервер -- возвращает новый объект приложения func НовСервер() (*Сервер, error) { ядро, ош := kernel.НовЯдро() if ош != nil { return nil, fmt.Errorf("НовСервер(): in make IKernel, err=\n\t%w", ош) } сам := &Сервер{ ИЯдро: ядро, } сам.ботоФерма, ош = serv_bots.НовБотоФерма(сам) if ош != nil { return nil, fmt.Errorf("НовСервер(): in create ServBots, err=\n\t%w", ош) } сам.сервВеб, ош = serv_web.НовСервВеб(сам) if ош != nil { return nil, fmt.Errorf("НовСервер(): при создании СервВеб, ош=\n\t%w", ош) } сам.сервСтат, ош = server_stat.НовСерверСтат(сам) if ош != nil { return nil, fmt.Errorf("НовСервер(): при создании ИСервСтат, ош=\n\t%w", ош) } return сам, nil } // Run -- запускает сервер бота в работу func (сам *Сервер) Run() error { сам.сервВеб.Пуск() <-сам.Done() return nil } // Стат -- возвращает статистику сервера func (сам *Сервер) Стат() types.ИСерверСтат { return сам.сервСтат } // ServBots -- возвращает словарь ботов func (сам *Сервер) ServBots() types.ИБотоФерма { return сам.ботоФерма }