cleanup in net/net.onyx
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 17 Jan 2022 21:31:03 +0000 (15:31 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 17 Jan 2022 21:31:03 +0000 (15:31 -0600)
core/net/net.onyx

index a407f65ceabf01c8ee82a11ef0189026ef9e9d3d..4510f312ba81b73bc85882ac7217209b166fd224 100644 (file)
@@ -2,42 +2,6 @@ package core.net
 
 use package core
 
-/*
-    Desired API for working with networking.
-    
-    // Client
-    s, err := net.socket_create(.Inet, .Stream);
-    if err != .None {
-        // Error handling
-    }
-    s->connect("10.0.0.1", 9001);
-
-    net.socket_send(s, "message");
-    msg := net.socket_recv(s, allocator=context.allocator); // Allocates the result
-
-    // with aliases for "methods"
-
-    s->send("message");
-    msg := s->recv(1024);
-
-
-
-    // Server (single client)
-    s, err := net.socket_create(.Inet, .Stream);
-    if err != .None { / ... / }
-
-    s->bind(9001);
-    if !s->listen() { // error }
-
-    client, addr := s->accept();
-    while true {
-        msg := s->recv(1024);
-        if msg.count > 0 {
-            s->send(msg);
-        }
-    }
-*/
-
 Socket :: struct {
     Handle :: #distinct i32
 
@@ -56,13 +20,13 @@ Socket :: struct {
 
 #foreign "onyx_runtime" {
     __net_create_socket :: (out_handle: ^Socket.Handle, domain: SocketDomain, type: SocketType) -> SocketError ---
-    __net_close_socket  :: (handle: Socket.Handle) -> void ---
-    __net_bind          :: (handle: Socket.Handle, port: u16) -> bool ---
+    __net_close_socket  :: (handle: Socket.Handle)               -> void ---
+    __net_bind          :: (handle: Socket.Handle, port: u16)    -> bool ---
     __net_listen        :: (handle: Socket.Handle, backlog: i32) -> void ---
-    __net_accept        :: (handle: Socket.Handle) -> Socket.Handle ---  // This should also return the address, but in what format?
+    __net_accept        :: (handle: Socket.Handle)               -> Socket.Handle ---  // This should also return the address, but in what format?
     __net_connect       :: (handle: Socket.Handle, host: str, port: u16) -> SocketError ---
-    __net_send          :: (handle: Socket.Handle, data: [] u8) -> u32 ---
-    __net_recv          :: (handle: Socket.Handle, data: [] u8) -> u32 ---
+    __net_send          :: (handle: Socket.Handle, data: [] u8)  -> u32 ---
+    __net_recv          :: (handle: Socket.Handle, data: [] u8)  -> u32 ---
 }
 
 #local {
@@ -129,6 +93,12 @@ socket_send :: (s: ^Socket, data: [] u8) -> u32 {
 }
 
 socket_sendall :: (s: ^Socket, data: [] u8) {
+    to_send := data;
+
+    while to_send.count > 0 {
+        sent := __net_send(s.handle, to_send);
+        to_send = to_send[sent .. to_send.count];
+    }
 }
 
 socket_recv :: (s: ^Socket, maxlen := 1024, allocator := context.allocator) -> [] u8 {