server.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // package server -- главный тип приложения, содержит бота, интерфейсы и т.п.
  2. package server
  3. import (
  4. "fmt"
  5. "wartank/pkg/components/kernel"
  6. "wartank/pkg/types"
  7. "wartank/server/serv_bots"
  8. "wartank/server/serv_web"
  9. "wartank/server/server_stat"
  10. )
  11. // Сервер -- главный тип приложения
  12. type Сервер struct {
  13. types.ИЯдро
  14. ботоФерма *serv_bots.БотоФерма
  15. сервВеб *serv_web.СервВеб
  16. сервСтат types.ИСерверСтат
  17. }
  18. // НовСервер -- возвращает новый объект приложения
  19. func НовСервер() (*Сервер, error) {
  20. ядро, ош := kernel.НовЯдро()
  21. if ош != nil {
  22. return nil, fmt.Errorf("НовСервер(): in make IKernel, err=\n\t%w", ош)
  23. }
  24. сам := &Сервер{
  25. ИЯдро: ядро,
  26. }
  27. сам.ботоФерма, ош = serv_bots.НовБотоФерма(сам)
  28. if ош != nil {
  29. return nil, fmt.Errorf("НовСервер(): in create ServBots, err=\n\t%w", ош)
  30. }
  31. сам.сервВеб, ош = serv_web.НовСервВеб(сам)
  32. if ош != nil {
  33. return nil, fmt.Errorf("НовСервер(): при создании СервВеб, ош=\n\t%w", ош)
  34. }
  35. сам.сервСтат, ош = server_stat.НовСерверСтат(сам)
  36. if ош != nil {
  37. return nil, fmt.Errorf("НовСервер(): при создании ИСервСтат, ош=\n\t%w", ош)
  38. }
  39. return сам, nil
  40. }
  41. // Run -- запускает сервер бота в работу
  42. func (сам *Сервер) Run() error {
  43. сам.сервВеб.Пуск()
  44. <-сам.Done()
  45. return nil
  46. }
  47. // Стат -- возвращает статистику сервера
  48. func (сам *Сервер) Стат() types.ИСерверСтат {
  49. return сам.сервСтат
  50. }
  51. // ServBots -- возвращает словарь ботов
  52. func (сам *Сервер) ServBots() types.ИБотоФерма {
  53. return сам.ботоФерма
  54. }