warbot_net.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package warbot_net
  2. import (
  3. "context"
  4. "wartank/pkg/components/arena_net/http_worker"
  5. . "wartank/pkg/kernel/kernel_types"
  6. "wartank/pkg/kernel/logger"
  7. "wartank/pkg/kernel/safe_bool"
  8. . "wartank/server/lev0/types"
  9. "wartank/server/serv_bots/warbot/warbot_net/bot_net_login"
  10. "wartank/server/serv_bots/warbot/warbot_net/bot_web_conn"
  11. )
  12. /*
  13. Веб-клиент для выполнения запросов на сервер
  14. */
  15. // ВарБотСеть -- веб-клиент для выполнения запросов на веб-сервер
  16. type ВарБотСеть struct {
  17. бот ИБот
  18. вебСокет *bot_web_conn.БотВебСокет
  19. логин *bot_net_login.БотСетьЛогин
  20. еслиОнлайн *safe_bool.БезопБул
  21. вебВоркер ИХттпВоркер
  22. ctx context.Context
  23. фнОтмена func()
  24. лог ИЛоггер
  25. }
  26. // НовВарБотСеть -- возвращает новый коннект к сети бота
  27. func НовВарБотСеть(бот ИБот) *ВарБотСеть {
  28. лог := logger.НовЛоггер("ВарБотСеть")
  29. лог.Инфо("НовВарБотСеть()\n")
  30. лог.Паника(бот == nil, "НовВарБотСеть(): ИБот == nil")
  31. лог.Инфо("НовВарБотСеть(): имя=%q\n", бот.Имя())
  32. ctx, фнОтмена := context.WithCancel(бот.Контекст())
  33. сам := &ВарБотСеть{
  34. бот: бот,
  35. вебСокет: bot_web_conn.НовБотВебСокет(),
  36. еслиОнлайн: safe_bool.НовБезопБул(),
  37. ctx: ctx,
  38. фнОтмена: фнОтмена,
  39. лог: лог,
  40. }
  41. сам.вебВоркер = http_worker.НовХттпВоркер(сам, сам.вебСокет.ВебСокет())
  42. // Подключаем сетевой логин
  43. сам.логин = bot_net_login.НовБотСетьЛогин(сам, сам.вебСокет.ВебСокет())
  44. сам.еслиОнлайн.Уст()
  45. _ = ИБотСеть(сам)
  46. return сам
  47. }
  48. // Бот -- возвращает ссылку на своего бота
  49. func (сам *ВарБотСеть) Бот() ИБот {
  50. return сам.бот
  51. }
  52. // Контекст -- контекст сети бота
  53. func (сам *ВарБотСеть) Контекст() context.Context {
  54. return сам.ctx
  55. }
  56. // Отмена -- отменяет контекст сети бота
  57. func (сам *ВарБотСеть) Отмена() {
  58. сам.фнОтмена()
  59. }
  60. // ЕслиОнлайн -- возвращает признак нахождения в онлайне
  61. func (сам *ВарБотСеть) ЕслиОнлайн() *safe_bool.БезопБул {
  62. return сам.еслиОнлайн
  63. }
  64. // ВебВоркер -- возвращает веб-воркер бота
  65. func (сам *ВарБотСеть) ВебВоркер() ИХттпВоркер {
  66. return сам.вебВоркер
  67. }
  68. // Куки -- возвращает куки для HTTP-коннект
  69. func (сам *ВарБотСеть) Куки() ИБотКуки {
  70. return сам.вебСокет.Куки()
  71. }