added: `net.socket_poll`
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 5 Jun 2023 15:58:55 +0000 (10:58 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 5 Jun 2023 15:58:55 +0000 (10:58 -0500)
core/net/net.onyx

index 601463b07056b14763704aaa0c08f0b365d27dc0..0cc0f6e8d0679c189e8f370341224c5949af2c0d 100644 (file)
@@ -32,6 +32,7 @@ Socket :: struct {
     recv      :: socket_recv
     recv_into :: socket_recv_into
     recvfrom  :: socket_recvfrom
+    poll      :: socket_poll
 }
 
 SocketError :: enum {
@@ -187,6 +188,16 @@ socket_poll_all :: (sockets: [] &Socket, timeout := -1, stat_buff: [] Socket_Pol
     __net_poll_recv(handles, timeout, stat_buff.data);
 }
 
+socket_poll :: (socket: &Socket, timeout := -1) -> Socket_Poll_Status {
+    handles := alloc.array_from_stack(Socket.Handle, 1);
+    handles[0] = socket.handle;
+
+    stat: Socket_Poll_Status;
+    __net_poll_recv(handles, timeout, &stat);
+
+    return stat;
+}
+
 socket_send :: (s: &Socket, data: [] u8) -> i32 {
     sent := __net_send(s.handle, data);
     if sent < 0 { s.vtable = null; }