applic.go 1.9 KB

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