Function read [src]

Reads data from the connection into the given buffer.

Prototype

pub fn read(conn: *Connection, buffer: []u8) ReadError!usize

Parameters

conn: *Connectionbuffer: []u8

Possible Errors

ConnectionResetByPeer
ConnectionTimedOut
EndOfStream
TlsAlert
TlsFailure
UnexpectedReadFailure

Source

pub fn read(conn: *Connection, buffer: []u8) ReadError!usize { const available_read = conn.read_end - conn.read_start; const available_buffer = buffer.len; if (available_read > available_buffer) { // partially read buffered data @memcpy(buffer[0..available_buffer], conn.read_buf[conn.read_start..conn.read_end][0..available_buffer]); conn.read_start += @intCast(available_buffer); return available_buffer; } else if (available_read > 0) { // fully read buffered data @memcpy(buffer[0..available_read], conn.read_buf[conn.read_start..conn.read_end]); conn.read_start += available_read; return available_read; } var iovecs = [2]std.posix.iovec{ .{ .base = buffer.ptr, .len = buffer.len }, .{ .base = &conn.read_buf, .len = conn.read_buf.len }, }; const nread = try conn.readvDirect(&iovecs); if (nread > buffer.len) { conn.read_start = 0; conn.read_end = @intCast(nread - buffer.len); return buffer.len; } return nread; }