server.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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/serv_bots"
  9. "wartank/server/serv_gui"
  10. "wartank/server/serv_web"
  11. )
  12. // Server -- главный тип приложения
  13. type Server struct {
  14. *kernel.Kernel
  15. store types.IStore
  16. servWeb *serv_web.ServWeb
  17. servBots *serv_bots.ServBots
  18. servGui *serv_gui.ServGui
  19. }
  20. // NewServer -- возвращает новый объект приложения
  21. func NewServer() (sf *Server, err error) {
  22. kernel, err := kernel.NewKernel()
  23. if err != nil {
  24. return nil, fmt.Errorf("NewServer(): in make IKernel, err=\n\t%w", err)
  25. }
  26. sf = &Server{
  27. Kernel: kernel,
  28. }
  29. sf.store, err = store.NewStore(sf)
  30. if err != nil {
  31. return nil, fmt.Errorf("NewServer(): in open store, err=%w", err)
  32. }
  33. sf.servBots, err = serv_bots.NewServBots(sf)
  34. if err != nil {
  35. return nil, fmt.Errorf("NewServer(): in create ServBots, err=%w", err)
  36. }
  37. sf.servWeb, err = serv_web.NewServWeb(sf)
  38. if err != nil {
  39. return nil, fmt.Errorf("NewServer(): in make IServWeb, err=\n\t%w", err)
  40. }
  41. sf.servGui, err = serv_gui.NewServGui(sf)
  42. if err != nil {
  43. return nil, fmt.Errorf("NewServer(): in make ServGui, err=\n\t%w", err)
  44. }
  45. return sf, nil
  46. }
  47. // Store -- возвращает хранилище
  48. func (sf *Server) Store() types.IStore {
  49. return sf.store
  50. }
  51. // Run -- запускает сервер бота в работу
  52. func (sf *Server) Run() error {
  53. // go sf.bot.Run()
  54. if err := sf.servBots.Load(); err != nil {
  55. return fmt.Errorf("Server.Run(): in load bots, err=\n\t%w", err)
  56. }
  57. go sf.servWeb.Run()
  58. sf.servGui.Run()
  59. <-sf.Done()
  60. // if err := sf._erverWeb.Error(); err != nil {
  61. // return fmt.Errorf("Server.Run(): in work IServHttp, err=\n\t%w", err)
  62. // }
  63. // if err := sf.bot.Error(); err != nil {
  64. // return fmt.Errorf("Server.Run(): in work IBot, err=\n\t%w", err)
  65. // }
  66. return nil
  67. }
  68. // ServWeb -- возвращает веб-сервер
  69. func (sf *Server) ServWeb() types.IServWeb {
  70. return sf.servWeb
  71. }
  72. // ServBots -- возвращает словарь ботов
  73. func (sf *Server) ServBots() types.IServBots {
  74. return sf.servBots
  75. }