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);
{
String old_msg_fragment = peer->fragment;
String old_msg_fragment = peer->msg_fragment;
ZeroStruct(peer);
peer->fragment = old_msg_fragment;
peer->fragment.len = 0;
peer->msg_fragment = old_msg_fragment;
peer->msg_fragment.len = 0;
}
}
else
{
Arena *perm = PermArena();
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->key = key;
@ -589,6 +589,7 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
//- Read socket
// TODO: Rate limit
// TODO: Per-frame packet limit to ensure other pipes are still serviced during load
{
i32 len = 0;
@ -670,7 +671,7 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
// Insert packet
{
NET_W32_Packet *left = peer->last_fragmented_packet;
NET_W32_Packet *left = peer->last_frag_packet;
for (; left; left = left->prev)
{
if (left->seq < packet->seq)
@ -678,13 +679,13 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
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
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;
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
{
peer->first_contiguous_packet = contig_start;
peer->first_cont_packet = contig_start;
}
contig_start->prev = peer->last_contiguous_packet;
peer->last_contiguous_packet = contig_end;
contig_start->prev = peer->last_cont_packet;
peer->last_cont_packet = contig_end;
if (contig_end->next)
{
@ -715,9 +716,9 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
}
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;
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)
{
NET_W32_Packet *first_msg_packet = peer->first_contiguous_packet;
for (NET_W32_Packet *packet = peer->first_contiguous_packet; packet;)
NET_W32_Packet *first_msg_packet = peer->first_cont_packet;
for (NET_W32_Packet *packet = peer->first_cont_packet; packet;)
{
NET_W32_Packet *next = packet->next;
{
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;
}
@ -787,14 +788,14 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
DllQueuePush(msg_buff->msgs.first, msg_buff->msgs.last, msg);
++msg_buff->msgs.count;
{
peer->first_contiguous_packet = next;
peer->first_cont_packet = next;
if (next)
{
next->prev = 0;
}
else
{
peer->last_contiguous_packet = 0;
peer->last_cont_packet = 0;
}
packet->next = NET_W32.first_free_packet;
NET_W32.first_free_packet = first_msg_packet;
@ -854,14 +855,14 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
b32 is_msg_end = 0;
while (!is_msg_end)
{
i64 copy_len = MinI64(NET_PacketSize - (i64)peer->fragment.len, src_data.len - src_pos);
CopyBytes(peer->fragment.text + peer->fragment.len, src_data.text + src_pos, copy_len);
i64 copy_len = MinI64(NET_PacketSize - (i64)peer->msg_fragment.len, src_data.len - src_pos);
CopyBytes(peer->msg_fragment.text + peer->msg_fragment.len, src_data.text + src_pos, copy_len);
src_pos += copy_len;
peer->fragment.len += copy_len;
peer->msg_fragment.len += copy_len;
// Push packet
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;
if (packet)
@ -879,15 +880,15 @@ void NET_W32_TickForever(WaveLaneCtx *lane)
}
packet->seq = ++peer->seq;
packet->msg_seq = msg_seq;
CopyBytes(packet->data.text, peer->fragment.text, peer->fragment.len);
packet->data.len = peer->fragment.len;
CopyBytes(packet->data.text, peer->msg_fragment.text, peer->msg_fragment.len);
packet->data.len = peer->msg_fragment.len;
if (is_msg_end)
{
packet->flags |= NET_W32_PacketFlag_EndMsg;
}
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)
{
// 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.
// Ack bits represent acks for sequences in range [bottom_ack + 2, bottom_ack + 65]
i64 bottom_ack = peer->remote_bottom_ack;

View File

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