From 2050c0e0576f05156f192aa4caf48834d2f28b14 Mon Sep 17 00:00:00 2001 From: fschildt Date: Fri, 22 Aug 2025 15:23:11 +0200 Subject: first commit --- src/server/s2c_sender.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/server/s2c_sender.c (limited to 'src/server/s2c_sender.c') diff --git a/src/server/s2c_sender.c b/src/server/s2c_sender.c new file mode 100644 index 0000000..37e9ffc --- /dev/null +++ b/src/server/s2c_sender.c @@ -0,0 +1,77 @@ +#include + +internal_var Arena s_send_arena; + +void +send_s2c_chat_message(ClientConnection *conn, String32 *username, String32 *content, OSTime now) +{ + OSTime time = os_time_get_now(); + Arena *arena = &s_send_arena; + + + S2C_ChatMessage *chat_message = arena_push(arena, sizeof(S2C_ChatMessage)); + + String32 *username_copy = string32_create_from_string32(arena, username); + chat_message->username = (String32*)((u8*)username_copy - (u8*)chat_message); + + String32 *content_copy = string32_create_from_string32(arena, content); + chat_message->content = (String32*)((u8*)content_copy - (u8*)chat_message); + + chat_message->epoch_time_seconds = time.seconds; + chat_message->epoch_time_nanoseconds = time.nanoseconds; + + chat_message->header.type = S2C_CHAT_MESSAGE; + chat_message->header.size = arena->size_used; + + + os_net_secure_stream_send(conn->secure_stream_id, arena->memory, arena->size_used); + arena_clear(arena); +} + + +void +send_s2c_user_update(ClientConnection *conn, String32 *username, u32 online_status) +{ + Arena *arena = &s_send_arena; + + + S2C_UserUpdate *user_update = arena_push(arena, sizeof(S2C_UserUpdate)); + + user_update->status = online_status; + + String32 *username_copy = string32_create_from_string32(arena, username); + user_update->username = (String32*)((u8*)username_copy - (u8*)user_update); + + user_update->header.type = S2C_USER_UPDATE; + user_update->header.size = arena->size_used; + + + os_net_secure_stream_send(conn->secure_stream_id, arena->memory, arena->size_used); + arena_clear(arena); +} + + +void +send_s2c_login(ClientConnection *conn, u32 login_result) +{ + Arena *arena = &s_send_arena; + + + S2C_Login *login = arena_push(arena, sizeof(S2C_Login)); + login->login_result = login_result; + + login->header.type = S2C_LOGIN; + login->header.size = arena->size_used; + + + os_net_secure_stream_send(conn->secure_stream_id, arena->memory, arena->size_used); + arena_clear(arena); +} + + +void +s2c_sender_init(Arena *arena) +{ + arena_init(&s_send_arena, 1408); +} + -- cgit v1.2.3