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
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