Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › Io/ › Threaded.zig › netReadWindows
netReadWindows
Threaded.netReadWindows
fn netReadWindows (socket_handle : net .Socket .Handle , data : [][]u8 ) net .Stream .Reader .Error !usize
File
Code
fn netReadWindows (socket_handle : net .Socket .Handle , data : [][]u8 ) net .Stream .Reader .Error !usize {
var iovecs : [max_iovecs_len ]windows .AFD .WSABUF (.@"var" ) = undefined ;
var len : u32 = 0 ;
for (data ) |buf | {
if (iovecs .len - len == 0 ) break ;
addAfdBuf (.@"var" , &iovecs , &len , buf );
}
const iosb = try deviceIoControl (&.{
.file = .{ .handle = socket_handle , .flags = .{ .nonblocking = true } },
.code = windows .IOCTL .AFD .RECEIVE ,
.in = @ptrCast (&windows .AFD .RECV_INFO {
.BufferArray = &iovecs ,
.BufferCount = len ,
.AfdFlags = .{ .NO_FAST_IO = true , .OVERLAPPED = true },
.TdiFlags = .{ .NORMAL = true },
}),
});
switch (iosb .u .Status ) {
.SUCCESS => return iosb .Information ,
.CANCELLED => unreachable ,
.INSUFFICIENT_RESOURCES => return error .SystemResources ,
.CONNECTION_RESET => return error .ConnectionResetByPeer ,
else => |status | return windows .unexpectedStatus (status ),
}
}