bot_net.go 2.9 KB

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