Separate stream delivery from path ACKs and acknowledge retained DATA
This commit is contained in:
1 parent
abe3d4bc89
commit
cc510fc74c
3 files changed
+259
-587
No files matched your search
+254
-587
File diff suppressed because it is too large.
Load diff
@@ -72,6 +72,7 @@ struct ETCP_DGRAM {// пакет (незашифрованный)
|
||||
uint16_t payload_len; // локальные метаданные request_pkt: DATA-байты; 0 — только ACK/control/FILLER, вне DATA-pacing
|
||||
struct ETCP_TX_ATTEMPT* attempt; // локальный резерв окна; complete снимает/фиксирует его после send
|
||||
uint8_t burst_packet; // Пакет создан измерительной серией; не зависит от последующей смены burst_active
|
||||
uint8_t ack_request; // Пакет содержит запрос границы окна; сбрасывается только после успешного send
|
||||
uint16_t timestamp;// timestamp отправляющего узла при отправке пакета
|
||||
uint8_t flag_up:1;// bit0 = up/down (recv_keepalive)
|
||||
uint8_t data[];// данные пакета (без timestamp)
|
||||
|
||||
@@ -156,6 +156,10 @@ struct ETCP_TX_ATTEMPT* etcp_tx_prepare(struct ETCP_LINK* link, struct INFLIGHT_
|
||||
}
|
||||
|
||||
void etcp_tx_complete(struct ETCP_DGRAM* dgram, int success) {
|
||||
if (success) {
|
||||
dgram->link->etcp->ack_till_pending = 0;
|
||||
if (dgram->ack_request) dgram->link->etcp->ack_request_pending = 0;
|
||||
}
|
||||
struct ETCP_TX_ATTEMPT* attempt = dgram->attempt;
|
||||
if (!attempt) return;
|
||||
dgram->attempt = NULL;
|
||||
|
||||
Reference in new issue
Block a user