From f1de59b20eb8fdea6d71090207f6af3839ff17fe Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 17 Jan 2022 15:31:03 -0600 Subject: [PATCH] cleanup in net/net.onyx --- core/net/net.onyx | 52 ++++++++++------------------------------------- 1 file changed, 11 insertions(+), 41 deletions(-) diff --git a/core/net/net.onyx b/core/net/net.onyx index a407f65c..4510f312 100644 --- a/core/net/net.onyx +++ b/core/net/net.onyx @@ -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 { -- 2.25.1