tiny bug fixes and updating syntax
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 29 Dec 2022 00:22:35 +0000 (18:22 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 29 Dec 2022 00:22:35 +0000 (18:22 -0600)
example/udp_client.onyx
example/udp_server.onyx
src/host.onyx
src/peer.onyx

index 71b5313d320fd76d0a80f8ce3109de8ca3b51fd7..587748f297862cefa5f4fb588e3a16b71157698b 100644 (file)
@@ -1,5 +1,5 @@
 #load "core/std"
-#load "./../src/module"
+#load "./../module"
 
 use package core
 onyx_net :: package onyx_net
@@ -28,7 +28,7 @@ main :: (args) => {
 
     input_thread: thread.Thread;
     thread.spawn(^input_thread, peer, (peer) => {
-        input_reader := io.reader_make(^stdin);
+        input_reader := io.reader_make(^stdio_stream);
 
         while true {
             line := io.read_line(^input_reader) |> string.strip_whitespace();
@@ -39,7 +39,7 @@ main :: (args) => {
                     onyx_net.peer_send_disconnect(peer);
                     onyx_net.peer_flush_outgoing_commands(peer);
                     onyx_net.peer_disconnect(peer);
-                    break;
+                    break break;
                 }
 
                 case "send" {
index 184b9f8610b5c2a331708656676df21de95c38e0..344f32aab2fd03cf1bc1b296c17d37c95faf204a 100644 (file)
@@ -1,5 +1,5 @@
 #load "core/std"
-#load "./../src/module"
+#load "./../module"
 
 use package core
 onyx_net :: package onyx_net
index 4cbf70ae09894b3e532163784c700f54d494d1b0..aba60ac5c271dcdd8a8577eafd70a0c9d3707db0 100644 (file)
@@ -1,6 +1,6 @@
 package onyx_net
 
-@CLEANUP
+// @CLEANUP
 use package core
 
 Host :: struct {
@@ -52,7 +52,9 @@ host_create :: (addr: ^net.Socket_Address, peer_count: u32) -> (^Host, Host_Crea
     defer if errored do net.socket_close(^host.socket);
 
     if addr != null {
-        if !host.socket->bind(addr.port) {
+        sa: net.Socket_Address;
+        net.make_ipv4_address(^sa, 0, addr.port);
+        if !(host.socket->bind(^sa)) {
             errored = true;
             return null, .Socket_Binding_Failed;
         }
@@ -68,7 +70,6 @@ host_create :: (addr: ^net.Socket_Address, peer_count: u32) -> (^Host, Host_Crea
     host.current_time = ~~ (os.time() & cast(u64) 0xFFFFFFFF);
 
     for^ peer: host.peers {
-        memory.set(peer, 0, sizeof typeof *peer);
         peer.host = host;
         peer.state = .Disconnected;
         peer.channels = .{ null, 0 };
@@ -188,14 +189,14 @@ host_send_commands :: (host: ^Host) -> bool {
 host_receive_commands :: (host: ^Host, timeout: u32 = 0) -> bool {
     if timeout > 0 {
         check_sockets := (^net.Socket).[ ^host.socket ];
-        changed_buffer := alloc.array_from_stack(i32, 1);
-        changed := net.socket_poll_all(check_sockets, timeout, changed_buffer);
+        changed_buffer := alloc.array_from_stack(net.Socket_Poll_Status, 1);
+        net.socket_poll_all(check_sockets, timeout, changed_buffer);
 
-        if changed.count == 0 do return false;
+        if changed_buffer[0] == .No_Change do return false;
     }
 
     buffer: [] u8 = host.packet_data[0];
-    recv_addr, recv_bytes := host.socket ->recvfrom(buffer);
+    recv_addr, recv_bytes := host.socket->recvfrom(buffer);
 
     host.received_addr = recv_addr;
     host.received_data = buffer[0 .. recv_bytes];
@@ -513,7 +514,7 @@ host_get_events :: (host: ^Host, timeout: u32 = 0) -> Iterator(^Event) {
     }
     defer string.advance(data, data_length);
 
-    @CopyPaste
+    // @CopyPaste
     channel := ^peer.channels[command.channel];
     for channel.reliable_windows {
         if command.seq_number == it do return;
@@ -524,13 +525,7 @@ host_get_events :: (host: ^Host, timeout: u32 = 0) -> Iterator(^Event) {
     channel.reliable_windows_cursor %= channel.reliable_windows.count;
 
     fragment_id := net.network_to_host(command.fragment_id);
-    fragment: ^Fragmented_Data = null;
-    for^ channel.pending_fragments {
-        if it.fragment_id == fragment_id {
-            fragment = it;
-            break;
-        }
-    }
+    fragment: ^Fragmented_Data = array.first(channel.pending_fragments, #(it.fragment_id == fragment_id));
 
     if fragment == null {
         fragment = array.alloc_one(^channel.pending_fragments);
@@ -555,7 +550,7 @@ host_get_events :: (host: ^Host, timeout: u32 = 0) -> Iterator(^Event) {
 }
 
 
-@Relocate
+// @Relocate
 Event :: struct {
     Type :: enum {
         None;
index e8c003422b01ef4b1453b92425f009fb56a2cbd2..bfbf0e8e9ef48d3d6c2bcb5eb71d5ed9c73398aa 100644 (file)
@@ -197,7 +197,7 @@ peer_check_outgoing_commands :: (peer: ^Peer) {
 }
 
 peer_flush_outgoing_commands :: (peer: ^Peer) -> i32 {
-    send_buffer: [65535] u8;
+    send_buffer := alloc.array_from_stack(u8, 65535);
 
     total_sent := 0;
     for peer.outgoing_commands {