Function writableVectorWsa [src]

Prototype

pub fn writableVectorWsa( r: *Reader, buffer: []std.os.windows.ws2_32.WSABUF, data: []const []u8, ) Error!struct { usize, usize }

Parameters

r: *Readerbuffer: []std.os.windows.ws2_32.WSABUFdata: []const []u8

Possible Errors

EndOfStream
ReadFailed

See the Reader implementation for detailed diagnostics.

Source

pub fn writableVectorWsa( r: *Reader, buffer: []std.os.windows.ws2_32.WSABUF, data: []const []u8, ) Error!struct { usize, usize } { var i: usize = 0; var n: usize = 0; if (r.seek == r.end) { for (data) |buf| { if (buffer.len - i == 0) return .{ i, n }; if (buf.len == 0) continue; if (std.math.cast(u32, buf.len)) |len| { buffer[i] = .{ .buf = buf.ptr, .len = len }; i += 1; n += len; continue; } buffer[i] = .{ .buf = buf.ptr, .len = std.math.maxInt(u32) }; i += 1; n += std.math.maxInt(u32); return .{ i, n }; } const buf = r.buffer; if (buf.len != 0) { r.seek = 0; r.end = 0; if (std.math.cast(u32, buf.len)) |len| { buffer[i] = .{ .buf = buf.ptr, .len = len }; } else { buffer[i] = .{ .buf = buf.ptr, .len = std.math.maxInt(u32) }; } i += 1; } } else { buffer[i] = .{ .buf = r.buffer.ptr + r.end, .len = @min(std.math.maxInt(u32), r.buffer.len - r.end), }; i += 1; } return .{ i, n }; }