server.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. // Сервер -- главный тип приложения
  12. type Сервер struct {
  13. *kernel.Kernel
  14. хранилище types.IStore
  15. ботоФерма *serv_bots.БотоФерма
  16. сервВеб *serv_web.СервВеб
  17. }
  18. // НовСервер -- возвращает новый объект приложения
  19. func НовСервер() (*Сервер, error) {
  20. kernel, ош := kernel.NewKernel()
  21. if ош != nil {
  22. return nil, fmt.Errorf("НовСервер(): in make IKernel, err=\n\t%w", ош)
  23. }
  24. сам := &Сервер{
  25. Kernel: kernel,
  26. }
  27. сам.хранилище, ош = store.NewStore(сам)
  28. if ош != nil {
  29. return nil, fmt.Errorf("НовСервер(): in open store, err=\n\t%w", ош)
  30. }
  31. сам.ботоФерма, ош = serv_bots.НовБотоФерма(сам)
  32. if ош != nil {
  33. return nil, fmt.Errorf("НовСервер(): in create ServBots, err=\n\t%w", ош)
  34. }
  35. /*
  36. сам.gui, err = serv_desktop.НовСерверДесктоп(сам)
  37. if err != nil {
  38. return nil, fmt.Errorf("НовСервер(): in make Gui, err=\n\t%w", err)
  39. }
  40. */
  41. сам.сервВеб, ош = serv_web.НовСервВеб(сам)
  42. if ош != nil {
  43. return nil, fmt.Errorf("НовСервер(): при создании СервВеб, ош=\n\t%w", ош)
  44. }
  45. return сам, nil
  46. }
  47. // Store -- возвращает хранилище
  48. func (сам *Сервер) Store() types.IStore {
  49. return сам.хранилище
  50. }
  51. // Run -- запускает сервер бота в работу
  52. func (сам *Сервер) Run() error {
  53. сам.сервВеб.Пуск()
  54. <-сам.Done()
  55. return nil
  56. }
  57. // ServBots -- возвращает словарь ботов
  58. func (сам *Сервер) ServBots() types.ИБотоФерма {
  59. return сам.ботоФерма
  60. }
  61. // Gui -- возвращает графику фермы-ботов
  62. func (сам *Сервер) Gui() types.ИГуи {
  63. return nil // сам.gui
  64. }