Function sendFileAll [src]

Number of bytes logically written is returned. This excludes bytes from buffer because they have already been logically written. The caller is responsible for flushing. Although the buffer may be bypassed as an optimization, this is not a guarantee. Asserts nonzero buffer capacity.

Prototype

pub fn sendFileAll(w: *Writer, file_reader: *File.Reader, limit: Limit) FileAllError!usize

Parameters

w: *Writerfile_reader: *File.Readerlimit: Limit

Possible Errors

ReadFailed

Detailed diagnostics are found on the File.Reader struct.

WriteFailed

See the Writer implementation for detailed diagnostics.

Source

pub fn sendFileAll(w: *Writer, file_reader: *File.Reader, limit: Limit) FileAllError!usize { // The fallback sendFileReadingAll() path asserts non-zero buffer capacity. // Explicitly assert it here as well to ensure the assert is hit even if // the fallback path is not taken. assert(w.buffer.len > 0); var remaining = @intFromEnum(limit); while (remaining > 0) { const n = sendFile(w, file_reader, .limited(remaining)) catch |err| switch (err) { error.EndOfStream => break, error.Unimplemented => { file_reader.mode = file_reader.mode.toReading(); remaining -= try w.sendFileReadingAll(file_reader, .limited(remaining)); break; }, else => |e| return e, }; remaining -= n; } return @intFromEnum(limit) - remaining; }