server.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // package server -- главный тип приложения, содержит бота, интерфейсы и т.п.
  2. package server
  3. import (
  4. "fmt"
  5. "wartank/pkg/components/kernel"
  6. "wartank/pkg/store"
  7. "wartank/pkg/types"
  8. "wartank/server/gui"
  9. "wartank/server/serv_bots"
  10. )
  11. // Server -- главный тип приложения
  12. type Server struct {
  13. *kernel.Kernel
  14. store types.IStore
  15. servBots *serv_bots.ServBots
  16. gui *gui.Gui
  17. }
  18. // NewServer -- возвращает новый объект приложения
  19. func NewServer() (sf *Server, err error) {
  20. kernel, err := kernel.NewKernel()
  21. if err != nil {
  22. return nil, fmt.Errorf("NewServer(): in make IKernel, err=\n\t%w", err)
  23. }
  24. sf = &Server{
  25. Kernel: kernel,
  26. }
  27. sf.store, err = store.NewStore(sf)
  28. if err != nil {
  29. return nil, fmt.Errorf("NewServer(): in open store, err=%w", err)
  30. }
  31. sf.servBots, err = serv_bots.NewServBots(sf)
  32. if err != nil {
  33. return nil, fmt.Errorf("NewServer(): in create ServBots, err=%w", err)
  34. }
  35. sf.gui, err = gui.NewGui(sf)
  36. if err != nil {
  37. return nil, fmt.Errorf("NewServer(): in make Gui, err=\n\t%w", err)
  38. }
  39. return sf, nil
  40. }
  41. // Store -- возвращает хранилище
  42. func (sf *Server) Store() types.IStore {
  43. return sf.store
  44. }
  45. // Run -- запускает сервер бота в работу
  46. func (sf *Server) Run() error {
  47. // go sf.bot.Run()
  48. sf.gui.Run()
  49. <-sf.Done()
  50. // if err := sf._erverWeb.Error(); err != nil {
  51. // return fmt.Errorf("Server.Run(): in work IServHttp, err=\n\t%w", err)
  52. // }
  53. // if err := sf.bot.Error(); err != nil {
  54. // return fmt.Errorf("Server.Run(): in work IBot, err=\n\t%w", err)
  55. // }
  56. return nil
  57. }
  58. // ServBots -- возвращает словарь ботов
  59. func (sf *Server) ServBots() types.IServBots {
  60. return sf.servBots
  61. }
  62. // Gui -- возвращает графику фермы-ботов
  63. func (sf *Server) Gui() types.ИГуи {
  64. return sf.gui
  65. }