warbot_net.go 3.1 KB

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