node: Add boolean argument to readSocket to switch between blocking and non-blocking mode

This commit is contained in:
2026-06-02 13:49:22 +02:00
parent 1250375063
commit 38ae508c49
2 changed files with 24 additions and 4 deletions
+23 -3
View File
@@ -417,10 +417,30 @@ pub fn connect(self: *Node, address: Address) ConnectError!Handle {
return self.descToHandle(desc);
}
pub fn readSocket(self: *Node, handle: Handle, target: []u8) HandleError!usize {
self.scheduler.sleep(10);
pub fn readSocket(self: *Node, handle: Handle, target: []u8, block: bool) HandleError!usize {
if (target.len == 0)
return 0;
const desc = try self.handleToDescOfType(handle, .conn);
return self.network_host.read(&desc.conn, target);
if (block) {
while (true) {
self.scheduler.sleep(10);
const num = self.network_host.read(&desc.conn, target);
if (num > 0)
return num;
if (num == 0) {
if (!self.network_host.isConnected(&desc.conn))
return 0;
}
}
unreachable;
} else {
return self.network_host.read(&desc.conn, target);
}
}
pub const WriteSocketError = HandleError || Network.SendError;