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.zig10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Server/Client.zig b/src/Server/Client.zig
index 77034fd..6ad1804 100644
--- a/src/Server/Client.zig
+++ b/src/Server/Client.zig
@@ -40,6 +40,16 @@ pub fn start(self: *Client, io: std.Io) !void {
std.debug.assert(self.to_client.end == 0);
while (true) {
self.to_client.end = try self.recv_queue.get(io, self.to_client.buffer, 1);
+ // Wait 1 nanosecond to see if more data is in the queue.
+ // If there is, add it to the write buffer before sending it.
+ // The reason for this is because if we send the first chunk as soon as we get it,
+ // we will likely be sending a partial message, which will end up being way slower.
+ try io.sleep(.fromNanoseconds(1), .awake);
+ self.to_client.end += try self.recv_queue.get(
+ io,
+ self.to_client.buffer[self.to_client.end..],
+ 0,
+ );
try self.to_client.flush();
}
}