Function elidingSendFile [src]

Prototype

pub fn elidingSendFile(w: *Writer, file_reader: *File.Reader, limit: std.Io.Limit) Writer.FileError!usize

Parameters

w: *Writerfile_reader: *File.Readerlimit: std.Io.Limit

Source

pub fn elidingSendFile(w: *Writer, file_reader: *File.Reader, limit: std.Io.Limit) Writer.FileError!usize { const bw: *BodyWriter = @alignCast(@fieldParentPtr("writer", w)); if (File.Handle == void) return error.Unimplemented; if (builtin.zig_backend == .stage2_aarch64) return error.Unimplemented; switch (bw.state) { .content_length => |*len| len.* -= w.end, else => {}, } w.end = 0; if (limit == .nothing) return 0; if (file_reader.getSize()) |size| { const n = limit.minInt64(size - file_reader.pos); if (n == 0) return error.EndOfStream; file_reader.seekBy(@intCast(n)) catch return error.Unimplemented; switch (bw.state) { .content_length => |*len| len.* -= n, else => {}, } return n; } else |_| { // Error is observable on `file_reader` instance, and it is better to // treat the file as a pipe. return error.Unimplemented; } }