]> jxnshi.xyz Git - mesange.git/commitdiff
Update
authorjxnshi <jxnshi@proton.me>
Fri, 31 Jan 2025 21:29:34 +0000 (22:29 +0100)
committerjxnshi <jxnshi@proton.me>
Fri, 31 Jan 2025 21:29:34 +0000 (22:29 +0100)
client-cli/host.odin
common/request.odin
server/client.odin

index 0d3c4d4bd64f2719ddc50be2a49150bc6267cbfb..d1f280c0cd42280a932bf5757ab97264e35c7af4 100644 (file)
@@ -54,32 +54,14 @@ request_host :: proc(
     return id, nil
 }
 
-receive_host :: proc(app: ^App) -> (message: common.Server_Message, err: common.Error) {
+receive_host :: proc(app: ^App) -> (id: u32, message: common.Server_Message, err: common.Error) {
     buffer: [1_000]u8
     packet := common.receive_packet(app.host.?) or_return
     packet_buffer: bytes.Buffer
     packet_buffer.buf = slice.into_dynamic(bytes_buf[:])
     packet_stream := bytes.buffer_to_stream(&bytes_buffer)
 
-    // Message type.
-    message_type, _ := io.read_byte(packet_stream)
-
-    // Message ID.
-    id_bytes: [size_of(u32)]u8
-    _, _ = io.read(packet_stream, id_bytes[:])
-
-    id, _ := endian.get_u32(.Little, id_bytes[:])
-
-    switch message_type {
-    // Request.
-    case 0:
-
-    // Response.
-    case 1:
-
-    case:
-        return nil, common.Receive_Message_Error.Invalid_Type
-    }
+    return common.server_message_from_bytes(app.host.?, packet_stream)
 }
 
 wait_host_response :: proc(app: ^App, id: u32) -> common.Server_Response {
index 9bfcfb7dcdb0c34adc75794d306fdbaf08f30d4d..ecf77932576fcc64d81e5af9e7a141af50e0c1da 100644 (file)
@@ -168,12 +168,7 @@ Client_Request :: struct {
     signature: [ed25519.SIGNATURE_SIZE]u8,
 }
 
-client_request_from_bytes :: proc(input: []u8) -> (request: Client_Request, err: Error) {
-    input := input
-
-    bytes_buffer := bytes.Buffer{ buf = mem.buffer_from_slice(input) }
-    stream := bytes.buffer_to_stream(&bytes_buffer)
-
+client_request_from_bytes :: proc(stream: io.Stream) -> (request: Client_Request, err: Error) {
     public_key_bytes: [ed25519.PUBLIC_KEY_SIZE]u8
 
     _ = io.read(stream, public_key_bytes[:]) or_return
@@ -271,13 +266,12 @@ client_request_verify :: proc(request: Client_Request, expiration: Maybe(i64)) -
 
 Server_Request :: struct {}
 
-Server_Response_Inner :: union {
+Server_Response :: union {
     string,
 }
 
-Server_Response :: struct {
-    id: u32,
-    inner: Server_Response_Inner,
+server_response_from_bytes :: proc(stream: io.Stream) -> (response: Server_Response, err: Error) {
+    
 }
 
 Server_Message :: union {
@@ -285,7 +279,30 @@ Server_Message :: union {
     Server_Response,
 }
 
-receive_packet :: proc(socket: net.Socket, buffer: []u8) -> (packet: []u8, err: Error) {
+server_message_from_bytes :: proc(server: net.TCP_Socket, stream: io.Stream) -> (id: u32, message: Server_Message, err: Error) {
+    // Message type.
+    message_type, _ := io.read_byte(stream)
+
+    // Message ID.
+    id_bytes: [size_of(u32)]u8
+    _, _ = io.read(stream, id_bytes[:])
+
+    id, _ := endian.get_u32(.Little, id_bytes[:])
+
+    switch message_type {
+    // Request.
+    case 0:
+
+    // Response.
+    case 1:
+        
+
+    case:
+        return nil, common.Receive_Message_Error.Invalid_Type
+    }
+}
+
+receive_packet :: proc(socket: net.TCP_Socket, buffer: []u8) -> (packet: []u8, err: Error) {
     length_bytes: [size_of(u32)]u8
     _ = net.recv_tcp(client, length_bytes[:]) or_return
 
index 188af73d25590a907a52be10dbae0a84a3effefe..3582f51c511acc1bfe19e4bfae131795594fdae4 100644 (file)
@@ -16,8 +16,11 @@ receive_request :: proc(client: net.TCP_Socket) -> (id: u32, request: common.Cli
     id, _ = endian.get_u32(id_bytes[:], .Little)
 
     request_bytes := packet[size_of(u32):]
+    request_buffer: bytes.Buffer
+    request_buffer.buf = slice.into_dynamic(bytes_buf[:])
+    request_stream := bytes.buffer_to_stream(&bytes_buffer)
 
-    request, err = common.client_request_from_bytes(request_bytes)
+        request, err = common.client_request_from_bytes(request_stream)
 
     return id, request, err
 }