summaryrefslogtreecommitdiff
path: root/src/server/client.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/client.zig')
-rw-r--r--src/server/client.zig24
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) {