Document fail-fast OOM and session interruption contracts

This commit is contained in:
evgeny committed 2026-10-23 12:32:56 +02:00
1 parent f221fa5a89
commit 23d426fd0c
2 files changed
+9 -2

No files matched your search

+2
View File
@@ -6,6 +6,8 @@
* Для доставки через промежуточные узлы используется etcp_router.h.
* Все вызовы — в потоке uasync. Перед отправкой ждать UP и свободной send_input_q.
* Владение entry различается: send забирает его только при успехе, recv — всегда.
* Принятие send и транспортный ACK не гарантируют завершение операции сервиса через REINIT/DELETE:
* сброс отбрасывает старый поток, владелец завершает/повторяет свои неподтверждённые операции.
*/
#ifndef ETCP_API_H
+7 -2
View File
@@ -2,7 +2,11 @@
* input принимает целые кодограммы, packer добавляет длину и делит поток под MTU;
* unpacker читает etcp->output_queue и выдаёт целые кодограммы в output/etcp_int_recv.
* Содержимое cmd сервисов непрозрачно для normalizer. Контекст принадлежит ETCP_CONN,
* владеет своими очередями/частичными буферами/ожиданием backpressure; все вызовы — uasync. */
* владеет своими очередями/частичными буферами/ожиданием backpressure; все вызовы — uasync.
* OOM после принятия данных аварийно сбрасывает всю ETCP-сессию, сохраняя физические линки.
* Старые данные не повторяются: владельцы после REINIT восстанавливают операции своего протокола.
* RX до сохранения в ETCP.recv_q может быть отброшен без ACK для обычного ретрансмита.
* Обработчики прекращают старый разбор после reset/close из callback; дополнительные OOM-очереди/таймеры не используются. */
#ifndef PKT_NORMALIZER_H
#define PKT_NORMALIZER_H
@@ -62,7 +66,8 @@ struct PKTNORM* pn_init(struct ETCP_CONN* etcp);// все что нужно (в
// Деинициализация пары
void pn_deinit(struct PKTNORM* pn);
// Сброс состояния (для переподключения)
// Отбросить обе очереди/частичные буферы, отменить flush и waiter без выделений памяти. NULL допустим.
// Вызывается владельцем при сбросе ETCP-потока; не запускает согласование эпох и не воспроизводит данные.
void pn_reset(struct PKTNORM* pn);
// Сброс состояния unpacker (для unpacker)