You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.4 KiB

Архитектура etcp:

etcp_connections:

  • обслуживает encrypt/decrypt и установку защищенного подключения.
  • для одного etcp соединения может испольоваться несколько подключений одновременно (load balancing / filover)

etcp_loadbalancer:

  • выбирает через какой маршрут отправить пакет
  • ограничивает rate отправки чтобы не забивать очереди каналов
  • сделан для совместной работы с etcp модулем

pkt_normalizer:

  • обеспечивает фрагментацию и сборку пакетов в единый поток для передачи через etcp.
  • взаимодейстует с etcp и очередями для приема и передачи.
  • в очередь для передачи может отправить любой модуль
  • из очереди приёма пакеты забирает etcp_api

etcp_api:

  • обеспечивает связь между etcp и остальными модулями
  • имеет функцию которая забирает из normalizer принятые данные и перенаправляет их на нужный модуль
  • имеет функцию connector_bind которой можно установить коллбэк для нужного типа кодограмм (первый байт).

etcp:

  • обеспечивает ретрансмиссии при передаче и сборку в правильной последовательности при приёме
  • взаимодействует с pkt_normalizer и с udp сокетами для отправки-получения пакетов

etcp_metric:

  • обеспечивает обновление метрик каналов etcp_connections
  • вызывается при получении ack

Тесты:

Правила работы с очередями в тестах:

  • для добавления в очередь надо использовать queue_wait_threshold(q,0,0,arg) и добавлять по одному пакету, каждый раз дожидаясь когда очередь станет пустой.
  • для получения надо использовать queue_set_callback + queue_resume_callback