123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // package server -- главный тип приложения, содержит бота, интерфейсы и т.п.
- package server
- import (
- "fmt"
- "wartank/pkg/components/kernel"
- "wartank/pkg/store"
- "wartank/pkg/types"
- "wartank/server/serv_bots"
- "wartank/server/serv_gui"
- "wartank/server/serv_web"
- )
- // Server -- главный тип приложения
- type Server struct {
- *kernel.Kernel
- store types.IStore
- servWeb *serv_web.ServWeb
- servBots *serv_bots.ServBots
- servGui *serv_gui.ServGui
- }
- // NewServer -- возвращает новый объект приложения
- func NewServer() (sf *Server, err error) {
- kernel, err := kernel.NewKernel()
- if err != nil {
- return nil, fmt.Errorf("NewServer(): in make IKernel, err=\n\t%w", err)
- }
- sf = &Server{
- Kernel: kernel,
- }
- sf.store, err = store.NewStore(sf)
- if err != nil {
- return nil, fmt.Errorf("NewServer(): in open store, err=%w", err)
- }
- sf.servBots, err = serv_bots.NewServBots(sf)
- if err != nil {
- return nil, fmt.Errorf("NewServer(): in create ServBots, err=%w", err)
- }
- sf.servWeb, err = serv_web.NewServWeb(sf)
- if err != nil {
- return nil, fmt.Errorf("NewServer(): in make IServWeb, err=\n\t%w", err)
- }
- sf.servGui, err = serv_gui.NewServGui(sf)
- if err != nil {
- return nil, fmt.Errorf("NewServer(): in make ServGui, err=\n\t%w", err)
- }
- return sf, nil
- }
- // Store -- возвращает хранилище
- func (sf *Server) Store() types.IStore {
- return sf.store
- }
- // Run -- запускает сервер бота в работу
- func (sf *Server) Run() error {
- // go sf.bot.Run()
- if err := sf.servBots.Load(); err != nil {
- return fmt.Errorf("Server.Run(): in load bots, err=\n\t%w", err)
- }
- go sf.servWeb.Run()
- sf.servGui.Run()
- <-sf.Done()
- // if err := sf._erverWeb.Error(); err != nil {
- // return fmt.Errorf("Server.Run(): in work IServHttp, err=\n\t%w", err)
- // }
- // if err := sf.bot.Error(); err != nil {
- // return fmt.Errorf("Server.Run(): in work IBot, err=\n\t%w", err)
- // }
- return nil
- }
- // ServWeb -- возвращает веб-сервер
- func (sf *Server) ServWeb() types.IServWeb {
- return sf.servWeb
- }
- // ServBots -- возвращает словарь ботов
- func (sf *Server) ServBots() types.IServBots {
- return sf.servBots
- }
|