summaryrefslogtreecommitdiff
path: root/src/server/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/main.zig')
-rw-r--r--src/server/main.zig22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/server/main.zig b/src/server/main.zig
index 044f551..c24a758 100644
--- a/src/server/main.zig
+++ b/src/server/main.zig
@@ -160,11 +160,11 @@ fn handleConnection(
try server.addClient(server_allocator, id, &client);
defer server.removeClient(io, server_allocator, id);
- var qbuf: [8]Message = undefined;
- var queue: std.Io.Queue(Message) = .init(&qbuf);
+ var sdqbuf: [8]Message = undefined;
+ var send_queue: std.Io.Queue(Message) = .init(&sdqbuf);
defer {
- queue.close(io);
- while (queue.getOne(io)) |msg| {
+ send_queue.close(io);
+ while (send_queue.getOne(io)) |msg| {
switch (msg) {
.msg => |m| m.deinit(server_allocator),
else => {},
@@ -172,7 +172,19 @@ fn handleConnection(
} else |_| {}
}
- var client_task = try io.concurrent(Client.start, .{ &client, io, server_allocator, &queue });
+ var rcqbuf: [8]Message = undefined;
+ var recv_queue: std.Io.Queue(Message) = .init(&rcqbuf);
+ defer {
+ recv_queue.close(io);
+ while (recv_queue.getOne(io)) |msg| {
+ switch (msg) {
+ .msg => |m| m.deinit(server_allocator),
+ else => {},
+ }
+ } else |_| {}
+ }
+
+ var client_task = try io.concurrent(Client.start, .{ &client, io, server_allocator, &send_queue, &recv_queue });
defer client_task.cancel(io) catch {};
try io.sleep(std.Io.Duration.fromMilliseconds(5), .real);