server.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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_pwa"
  10. "wartank/server/serv_rpc"
  11. )
  12. // Server -- главный тип приложения
  13. type Server struct {
  14. *kernel.Kernel
  15. store types.IStore
  16. servRpc *serv_rpc.ServRpc
  17. servBots *serv_bots.ServBots
  18. servPwa *serv_pwa.ServPwa
  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. servPwa: serv_pwa.NewServPwa(),
  29. }
  30. sf.store, err = store.NewStore(sf)
  31. if err != nil {
  32. return nil, fmt.Errorf("NewServer(): in open store, err=%w", err)
  33. }
  34. sf.servBots, err = serv_bots.NewServBots(sf)
  35. if err != nil {
  36. return nil, fmt.Errorf("NewServer(): in create ServBots, err=%w", err)
  37. }
  38. // sf.servRpc, err = serv_rpc.NewServRpc(sf)
  39. // if err != nil {
  40. // return nil, fmt.Errorf("NewServer(): in make IServRpc, err=\n\t%w", err)
  41. // }
  42. return sf, nil
  43. }
  44. // Store -- возвращает хранилище
  45. func (sf *Server) Store() types.IStore {
  46. return sf.store
  47. }
  48. // Run -- запускает сервер бота в работу
  49. func (sf *Server) Run() error {
  50. // go sf.bot.Run()
  51. if err := sf.servBots.Load(); err != nil {
  52. return fmt.Errorf("Server.Run(): in load bots, err=\n\t%w", err)
  53. }
  54. // go sf.servRpc.Run()
  55. go sf.servPwa.Run()
  56. <-sf.Done()
  57. // if err := sf._erverWeb.Error(); err != nil {
  58. // return fmt.Errorf("Server.Run(): in work IServHttp, err=\n\t%w", err)
  59. // }
  60. // if err := sf.bot.Error(); err != nil {
  61. // return fmt.Errorf("Server.Run(): in work IBot, err=\n\t%w", err)
  62. // }
  63. return nil
  64. }
  65. // ServBots -- возвращает словарь ботов
  66. func (sf *Server) ServBots() types.IServBots {
  67. return sf.servBots
  68. }