Document constructor cancellation and link memory ownership
This commit is contained in:
1 parent
21a4dd7a70
commit
8fe1011da2
2 files changed
+7
-2
No files matched your search
@@ -251,7 +251,9 @@ struct ETCP_CONN {
|
||||
|
||||
#define RTT_CB_PERIOD_TB 600000 // 1 минута в 0.1ms
|
||||
|
||||
// Создать транспортный объект; жизненным циклом прикладного соединения управляет NCD.
|
||||
/* Создать транспортный объект в instance, name копируется (может быть NULL).
|
||||
* Жизненным циклом прикладного соединения управляет NCD. Возвращает объект либо NULL при ошибке/отмене из callback.
|
||||
* New-connection/NEW callbacks могут закрыть объект; после отмены конструктор завершает закрытие и не возвращает handle. */
|
||||
struct ETCP_CONN* etcp_connection_create(struct UTUN_INSTANCE* instance, char* name);
|
||||
|
||||
#define ETCP_DOWN_TIMEOUT_TB 300000 /* 30 секунд в 0.1 ms */
|
||||
|
||||
@@ -407,7 +407,9 @@ void tcp_server_on_link(struct stcp_link *link, struct ETCP_SOCKET *tcp_sock);
|
||||
|
||||
// ── Создание, поиск и закрытие линков ──
|
||||
|
||||
// Создать линк между сокетом и адресом пира для ETCP_CONN.
|
||||
/* Создать линк etcp через conn к remote_addr; conn=NULL выбирает исходящий TCP без bind, is_server задаёт роль.
|
||||
* Уведомляет о создании, для исходящего UDP запускает INIT. Ошибка/close из callback — NULL без живого линка.
|
||||
* До возврата память принадлежит конструктору: отмена закрывает ресурсы, освобождение завершает конструктор. */
|
||||
struct ETCP_LINK* etcp_link_new(struct ETCP_CONN* etcp, struct ETCP_SOCKET* conn,
|
||||
const struct sockaddr_storage* remote_addr, uint8_t is_server);
|
||||
|
||||
@@ -416,6 +418,7 @@ struct ETCP_LINK* etcp_link_new(struct ETCP_CONN* etcp, struct ETCP_SOCKET* conn
|
||||
void etcp_link_update_inflight_lim(struct ETCP_LINK* link, uint32_t new_lim);
|
||||
|
||||
/* Снимает линк из списков, отменяет таймеры/STCP и освобождает память до возврата.
|
||||
* При вызове внутри его конструктора память сохраняется до выхода из конструктора, который вернёт NULL.
|
||||
* Из callback его закрытия повторный close допустим; после возврата handle недействителен.
|
||||
* Callback может закрыть ETCP_CONN или соседний линк: вызывающий не должен хранить next через уведомление. */
|
||||
void etcp_link_close(struct ETCP_LINK* link);
|
||||
|
||||
Reference in new issue
Block a user