server.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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_web"
  10. )
  11. // Server -- главный тип приложения
  12. type Server struct {
  13. *kernel.Kernel
  14. store types.IStore
  15. servWeb *serv_web.ServWeb
  16. servBots *serv_bots.ServBots
  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.servWeb, err = serv_web.NewServWeb(sf)
  36. if err != nil {
  37. return nil, fmt.Errorf("NewServer(): in make IServWeb, 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. if err := sf.servBots.Load(); err != nil {
  49. return fmt.Errorf("Server.Run(): in load bots, err=\n\t%w", err)
  50. }
  51. go sf.servWeb.Run()
  52. <-sf.Done()
  53. // if err := sf._erverWeb.Error(); err != nil {
  54. // return fmt.Errorf("Server.Run(): in work IServHttp, err=\n\t%w", err)
  55. // }
  56. // if err := sf.bot.Error(); err != nil {
  57. // return fmt.Errorf("Server.Run(): in work IBot, err=\n\t%w", err)
  58. // }
  59. return nil
  60. }
  61. // ServWeb -- возвращает веб-сервер
  62. func (sf *Server) ServWeb() types.IServWeb {
  63. return sf.servWeb
  64. }
  65. // ServBots -- возвращает словарь ботов
  66. func (sf *Server) ServBots() types.IServBots {
  67. return sf.servBots
  68. }