Архитектура 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