mod_serv.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // package mod_serv -- главный тип приложения, содержит бота, интерфейсы и т.п.
  2. package mod_serv
  3. import (
  4. "time"
  5. . "gitp78su.ipnodns.ru/svi/kern"
  6. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  7. . "wartank/app/lev0/types"
  8. "wartank/app/lev3/farm_bots"
  9. "wartank/app/lev3/serv_web"
  10. "wartank/app/lev3/server_stat"
  11. )
  12. // МодульСервер -- главный тип приложения
  13. type МодульСервер struct {
  14. IKernelModule
  15. конт IKernelCtx
  16. ботоФерма *farm_bots.БотоФерма
  17. сервСтат ИСерверСтат
  18. лог ILogBuf
  19. }
  20. // НовМодСервер -- возвращает новый модуль сервера
  21. func НовМодСервер() *МодульСервер {
  22. лог := NewLogBuf()
  23. лог.Info("НовМодСервер()\n")
  24. конт := GetKernelCtx()
  25. сам := &МодульСервер{
  26. конт: конт,
  27. IKernelModule: NewKernelModule("мод_сервер"),
  28. лог: лог,
  29. }
  30. конт.Set("мод_сервер", сам, "Модуль сервера WarBot")
  31. _ = GetKernelStoreKv()
  32. сам.ботоФерма = farm_bots.НовБотоФерма()
  33. сервВеб := serv_web.НовСервВеб()
  34. сам.Ctx().Set("сервВеб", сервВеб, "Веб-сервер модуля сервера")
  35. сам.сервСтат = server_stat.НовСерверСтат()
  36. сам.Ctx().Set("сервСтат", сам.сервСтат, "Статистика сервера")
  37. _ = ИПриложение(сам)
  38. return сам
  39. }
  40. // Пуск -- запускает сервер бота в работу
  41. func (сам *МодульСервер) Run() {
  42. сам.лог.Info("МодульСервер.Пуск()\n")
  43. go сам.пуск()
  44. }
  45. func (сам *МодульСервер) пуск() {
  46. time.Sleep(time.Minute * 20)
  47. сам.конт.Cancel()
  48. сам.конт.Wg().Wait()
  49. }
  50. // Стат -- возвращает статистику сервера
  51. func (сам *МодульСервер) Стат() ИСерверСтат {
  52. return сам.сервСтат
  53. }
  54. // ServBots -- возвращает словарь ботов
  55. func (сам *МодульСервер) ServBots() ИБотоФерма {
  56. return сам.ботоФерма
  57. }