formatting

This commit is contained in:
jacob 2026-01-17 16:23:16 -06:00
parent c3959a6970
commit 34c37417a9
2 changed files with 36 additions and 32 deletions

View File

@ -120,17 +120,17 @@ NET_W32_Peer *NET_W32_TouchPeerFromKey(NET_W32_Pipe *pipe, NET_Key key)
{ {
SllStackPop(NET_W32.first_free_peer); SllStackPop(NET_W32.first_free_peer);
{ {
String old_msg_fragment = peer->fragment; String old_msg_fragment = peer->msg_fragment;
ZeroStruct(peer); ZeroStruct(peer);
peer->fragment = old_msg_fragment; peer->msg_fragment = old_msg_fragment;
peer->fragment.len = 0; peer->msg_fragment.len = 0;
} }
} }
else else
{ {
Arena *perm = PermArena(); Arena *perm = PermArena();
peer = PushStruct(perm, NET_W32_Peer); peer = PushStruct(perm, NET_W32_Peer);
peer->fragment.text = PushStructsNoZero(perm, u8, NET_PacketSize); peer->msg_fragment.text = PushStructsNoZero(perm, u8, NET_PacketSize);
} }
peer->hash = hash; peer->hash = hash;
peer->key = key; peer->key = key;
@ -589,6 +589,7 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
//- Read socket //- Read socket
// TODO: Rate limit // TODO: Rate limit
// TODO: Per-frame packet limit to ensure other pipes are still serviced during load
{ {
i32 len = 0; i32 len = 0;
@ -670,7 +671,7 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
// Insert packet // Insert packet
{ {
NET_W32_Packet *left = peer->last_fragmented_packet; NET_W32_Packet *left = peer->last_frag_packet;
for (; left; left = left->prev) for (; left; left = left->prev)
{ {
if (left->seq < packet->seq) if (left->seq < packet->seq)
@ -678,13 +679,13 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
break; break;
} }
} }
DllQueueInsert(peer->first_fragmented_packet, peer->last_fragmented_packet, left, packet); DllQueueInsert(peer->first_frag_packet, peer->last_frag_packet, left, packet);
} }
// Transfer fragmented -> contiguous packets // Transfer fragmented -> contiguous packets
if (is_sequential) if (is_sequential)
{ {
NET_W32_Packet *contig_start = peer->first_fragmented_packet; NET_W32_Packet *contig_start = peer->first_frag_packet;
NET_W32_Packet *contig_end = packet; NET_W32_Packet *contig_end = packet;
for (NET_W32_Packet *tmp = packet->next; tmp; tmp = tmp->next) for (NET_W32_Packet *tmp = packet->next; tmp; tmp = tmp->next)
{ {
@ -698,16 +699,16 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
} }
} }
if (peer->last_contiguous_packet) if (peer->last_cont_packet)
{ {
peer->last_contiguous_packet->next = contig_start; peer->last_cont_packet->next = contig_start;
} }
else else
{ {
peer->first_contiguous_packet = contig_start; peer->first_cont_packet = contig_start;
} }
contig_start->prev = peer->last_contiguous_packet; contig_start->prev = peer->last_cont_packet;
peer->last_contiguous_packet = contig_end; peer->last_cont_packet = contig_end;
if (contig_end->next) if (contig_end->next)
{ {
@ -715,9 +716,9 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
} }
else else
{ {
peer->last_fragmented_packet = 0; peer->last_frag_packet = 0;
} }
peer->first_fragmented_packet = contig_end->next; peer->first_frag_packet = contig_end->next;
contig_end->next = 0; contig_end->next = 0;
i64 diff = contig_end->seq - peer->bottom_ack; i64 diff = contig_end->seq - peer->bottom_ack;
@ -764,13 +765,13 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
for (NET_W32_Peer *peer = pipe->first_peer; peer; peer = peer->next) for (NET_W32_Peer *peer = pipe->first_peer; peer; peer = peer->next)
{ {
NET_W32_Packet *first_msg_packet = peer->first_contiguous_packet; NET_W32_Packet *first_msg_packet = peer->first_cont_packet;
for (NET_W32_Packet *packet = peer->first_contiguous_packet; packet;) for (NET_W32_Packet *packet = peer->first_cont_packet; packet;)
{ {
NET_W32_Packet *next = packet->next; NET_W32_Packet *next = packet->next;
{ {
b32 msg_has_end = 0; b32 msg_has_end = 0;
if (packet->msg_seq != peer->last_contiguous_packet->msg_seq || !!(peer->last_contiguous_packet->flags | NET_W32_PacketFlag_EndMsg)) if (packet->msg_seq != peer->last_cont_packet->msg_seq || !!(peer->last_cont_packet->flags | NET_W32_PacketFlag_EndMsg))
{ {
msg_has_end = 1; msg_has_end = 1;
} }
@ -787,14 +788,14 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
DllQueuePush(msg_buff->msgs.first, msg_buff->msgs.last, msg); DllQueuePush(msg_buff->msgs.first, msg_buff->msgs.last, msg);
++msg_buff->msgs.count; ++msg_buff->msgs.count;
{ {
peer->first_contiguous_packet = next; peer->first_cont_packet = next;
if (next) if (next)
{ {
next->prev = 0; next->prev = 0;
} }
else else
{ {
peer->last_contiguous_packet = 0; peer->last_cont_packet = 0;
} }
packet->next = NET_W32.first_free_packet; packet->next = NET_W32.first_free_packet;
NET_W32.first_free_packet = first_msg_packet; NET_W32.first_free_packet = first_msg_packet;
@ -854,14 +855,14 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
b32 is_msg_end = 0; b32 is_msg_end = 0;
while (!is_msg_end) while (!is_msg_end)
{ {
i64 copy_len = MinI64(NET_PacketSize - (i64)peer->fragment.len, src_data.len - src_pos); i64 copy_len = MinI64(NET_PacketSize - (i64)peer->msg_fragment.len, src_data.len - src_pos);
CopyBytes(peer->fragment.text + peer->fragment.len, src_data.text + src_pos, copy_len); CopyBytes(peer->msg_fragment.text + peer->msg_fragment.len, src_data.text + src_pos, copy_len);
src_pos += copy_len; src_pos += copy_len;
peer->fragment.len += copy_len; peer->msg_fragment.len += copy_len;
// Push packet // Push packet
is_msg_end = src_pos >= (i64)src_data.len; is_msg_end = src_pos >= (i64)src_data.len;
if (peer->fragment.len == NET_PacketSize || is_msg_end) if (peer->msg_fragment.len == NET_PacketSize || is_msg_end)
{ {
NET_W32_Packet *packet = NET_W32.first_free_packet; NET_W32_Packet *packet = NET_W32.first_free_packet;
if (packet) if (packet)
@ -879,15 +880,15 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
} }
packet->seq = ++peer->seq; packet->seq = ++peer->seq;
packet->msg_seq = msg_seq; packet->msg_seq = msg_seq;
CopyBytes(packet->data.text, peer->fragment.text, peer->fragment.len); CopyBytes(packet->data.text, peer->msg_fragment.text, peer->msg_fragment.len);
packet->data.len = peer->fragment.len; packet->data.len = peer->msg_fragment.len;
if (is_msg_end) if (is_msg_end)
{ {
packet->flags |= NET_W32_PacketFlag_EndMsg; packet->flags |= NET_W32_PacketFlag_EndMsg;
} }
DllQueuePush(peer->first_remote_packet, peer->last_remote_packet, packet); DllQueuePush(peer->first_remote_packet, peer->last_remote_packet, packet);
peer->fragment.len = 0; peer->msg_fragment.len = 0;
} }
} }
} }
@ -950,7 +951,7 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
for (NET_W32_Peer *peer = pipe->first_peer; peer; peer = peer->next) for (NET_W32_Peer *peer = pipe->first_peer; peer; peer = peer->next)
{ {
// bottom_ack represents the highest continuous sequence acknowledgement, meaning sequences in range [0, bottom_ack] are always acked. // bottom_ack represents the highest contiguous sequence acknowledgement, meaning sequences in range [0, bottom_ack] are always acked.
// This means bottom_ack + 1 is never acked. // This means bottom_ack + 1 is never acked.
// Ack bits represent acks for sequences in range [bottom_ack + 2, bottom_ack + 65] // Ack bits represent acks for sequences in range [bottom_ack + 2, bottom_ack + 65]
i64 bottom_ack = peer->remote_bottom_ack; i64 bottom_ack = peer->remote_bottom_ack;

View File

@ -87,18 +87,21 @@ Struct(NET_W32_Peer)
i64 bottom_ack; i64 bottom_ack;
u64 ack_bits; u64 ack_bits;
// Outgoing packets awaiting acknowledgement
NET_W32_Packet *first_remote_packet; NET_W32_Packet *first_remote_packet;
NET_W32_Packet *last_remote_packet; NET_W32_Packet *last_remote_packet;
NET_W32_Packet *first_fragmented_packet; // Fragmented msg packets awaiting holes to be filled
NET_W32_Packet *last_fragmented_packet; NET_W32_Packet *first_frag_packet;
NET_W32_Packet *last_frag_packet;
NET_W32_Packet *first_contiguous_packet; // Contiguous msg packets awaiting assembly
NET_W32_Packet *last_contiguous_packet; NET_W32_Packet *first_cont_packet;
NET_W32_Packet *last_cont_packet;
i64 seq; i64 seq;
i64 msg_seq; i64 msg_seq;
String fragment; String msg_fragment;
i64 last_packet_received_ns; i64 last_packet_received_ns;
i64 last_packet_sent_ns; i64 last_packet_sent_ns;