diff options
Diffstat (limited to 'src/server/client.zig')
| -rw-r--r-- | src/server/client.zig | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/server/client.zig b/src/server/client.zig index 458bbbb..ed1d33e 100644 --- a/src/server/client.zig +++ b/src/server/client.zig @@ -42,7 +42,6 @@ pub const ClientState = struct { ) void { while (true) { const message = self.recv_queue.getOne(io) catch break; - std.debug.print("got message in write loop to send to client: {any}\n", .{message}); switch (message) { .@"+ok" => { writeOk(self.to_client) catch break; @@ -54,28 +53,25 @@ pub const ClientState = struct { writeInfo(self.to_client, info) catch break; }, .msg => |m| { - if (writeMsg(self.to_client, m)) |_| { - @branchHint(.likely); - } else |_| { - @branchHint(.unlikely); - break; - } + writeMsg(self.to_client, m) catch break; }, else => { std.debug.panic("unimplemented write", .{}); }, } } + self.task.cancel(io); } pub fn deinit(self: *ClientState, io: std.Io, allocator: std.mem.Allocator) void { self.task.cancel(io); self.connect.deinit(); - allocator.destroy(self.recv_queue); + _ = allocator; + // allocator.destroy(self.recv_queue); } /// Return true if the value was put in the clients buffer to process, else false. - pub fn send(self: *ClientState, io: std.Io, msg: Message) std.Io.Cancelable!bool { + pub fn send(self: *ClientState, io: std.Io, msg: Message) (std.Io.Cancelable || std.Io.QueueClosedError)!bool { try self.recv_queue.putOne(io, msg); return true; } @@ -95,14 +91,11 @@ fn writeOk(out: *std.Io.Writer) !void { } fn writePong(out: *std.Io.Writer) !void { - std.debug.print("out pointer: {*}\n", .{out}); - std.debug.print("writing pong\n", .{}); _ = try out.write("PONG\r\n"); try out.flush(); } pub fn writeInfo(out: *std.Io.Writer, info: Message.ServerInfo) !void { - std.debug.print("writing info: {any}\n", .{info}); _ = try out.write("INFO "); try std.json.Stringify.value(info, .{}, out); _ = try out.write("\r\n"); @@ -110,7 +103,6 @@ pub fn writeInfo(out: *std.Io.Writer, info: Message.ServerInfo) !void { } fn writeMsg(out: *std.Io.Writer, msg: Message.Msg) !void { - std.debug.print("PRINTING MESSAGE\n\n\n\n", .{}); try out.print( "MSG {s} {s} {s} {d}\r\n{s}\r\n", .{ @@ -136,6 +128,7 @@ test { var from_client_queue: std.Io.Queue(Message) = .init(&from_client_buf); { + // Simulate stream while (Message.next(gpa, &from_client)) |msg| { switch (msg) { .eos => { @@ -146,7 +139,10 @@ test { try from_client_queue.putOne(io, msg); }, } - } else |_| {} + } else |err| switch (err) { + error.EndOfStream => try from_client_queue.close(io), + else => return err, + } while (from_client_queue.getOne(io)) |msg| { switch (msg) { |
