use iocp for net worker waits instead of WSAPoll + dummy sockets
This commit is contained in:
parent
34c37417a9
commit
cacdf10229
@ -3,6 +3,8 @@
|
||||
|
||||
#define NET_PacketSize 1024
|
||||
|
||||
#define NET_Ephemeral 0xFFFFFFFFFFFFFFFFull
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
//~ Opaque types
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -119,6 +119,18 @@ Struct(NET_W32_PeerBin)
|
||||
|
||||
Struct(NET_W32_Pipe)
|
||||
{
|
||||
//- IOCP data
|
||||
|
||||
OVERLAPPED ovl; // First field must be OVERLAPPED for cast from IOCP returns
|
||||
|
||||
i32 iocp_count; // How many overlapped operations are currently queued.
|
||||
|
||||
WSABUF recv_wsabuff;
|
||||
struct sockaddr_in6 recv_addr;
|
||||
i32 recv_addr_sz;
|
||||
|
||||
SOCKET udp;
|
||||
|
||||
//- Shared data
|
||||
|
||||
NET_W32_Pipe *next;
|
||||
@ -139,6 +151,8 @@ Struct(NET_W32_Pipe)
|
||||
|
||||
//- Worker data
|
||||
|
||||
i64 last_attempted_bind_ns;
|
||||
|
||||
NET_W32_Peer *first_peer;
|
||||
NET_W32_Peer *last_peer;
|
||||
i64 num_msg_packets_received_this_frame;
|
||||
@ -147,7 +161,6 @@ Struct(NET_W32_Pipe)
|
||||
NET_W32_PeerBin *peer_bins;
|
||||
|
||||
u64 bound_port;
|
||||
SOCKET udp;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
@ -170,8 +183,7 @@ Struct(NET_W32_Ctx)
|
||||
NET_W32_Peer *first_free_peer;
|
||||
NET_W32_Packet *first_free_packet;
|
||||
|
||||
NET_W32_DummySocket wake_send_sock;
|
||||
NET_W32_DummySocket wake_recv_sock;
|
||||
HANDLE iocp;
|
||||
};
|
||||
|
||||
extern NET_W32_Ctx NET_W32;
|
||||
@ -186,6 +198,7 @@ struct sockaddr_in6 NET_W32_AddressFromKey(NET_Key key);
|
||||
void NET_W32_SignalWorker(void);
|
||||
NET_W32_Peer *NET_W32_TouchPeerFromKey(NET_W32_Pipe *pipe, NET_Key key);
|
||||
u32 NET_W32_ChecksumFromPacketString(String str);
|
||||
void NET_W32_PostRecv(NET_W32_Pipe *pipe);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
//~ Worker
|
||||
|
||||
@ -2651,6 +2651,8 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
{
|
||||
// V_PushNotif(Lit("Hello!!!"));
|
||||
P_Msg *chat_msg = P_PushMsg(P_MsgKind_Chat, Lit("Hello!!!"));
|
||||
|
||||
|
||||
} break;
|
||||
}
|
||||
}
|
||||
@ -2670,7 +2672,6 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
|
||||
P_MsgList in_msgs = Zi;
|
||||
{
|
||||
NET_Bind(net_pipe, 0);
|
||||
NET_MsgList net_msgs = NET_Swap(frame->arena, net_pipe);
|
||||
for (NET_Msg *net_msg = net_msgs.first; net_msg; net_msg = net_msg->next)
|
||||
{
|
||||
@ -3847,7 +3848,8 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
if (frame->held_buttons[Button_R] && !prev_frame->held_buttons[Button_R])
|
||||
{
|
||||
LogDebugF("Sending test payload");
|
||||
NET_Push(net_pipe, server_key, STRING(P_TilesCount, predict_world->tiles), 0);
|
||||
// NET_Push(net_pipe, server_key, STRING(P_TilesCount, predict_world->tiles), 0);
|
||||
NET_Push(net_pipe, server_key, Lit("Hello there!"), 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user