Function chunkedDrain [src]

Prototype

pub fn chunkedDrain(w: *Writer, data: []const []const u8, splat: usize) Error!usize

Parameters

w: *Writerdata: []const []const u8splat: usize

Possible Errors

WriteFailed Error

See the Writer implementation for detailed diagnostics.

Source

pub fn chunkedDrain(w: *Writer, data: []const []const u8, splat: usize) Error!usize { const bw: *BodyWriter = @alignCast(@fieldParentPtr("writer", w)); assert(!bw.isEliding()); const out = bw.http_protocol_output; const data_len = w.end + Writer.countSplat(data, splat); l: switch (bw.state.chunk_len) { 0 => { const header_buf = try out.writableArray(chunk_header_template.len); @memcpy(header_buf, chunk_header_template); writeHex(header_buf[0..chunk_len_digits], data_len); bw.state.chunk_len = data_len + 2; continue :l bw.state.chunk_len; }, 1 => unreachable, // Wrote more data than specified in chunk header. 2 => { try out.writeAll("\r\n"); bw.state.chunk_len = 0; continue :l 0; }, else => { const n = try out.writeSplatHeaderLimit(w.buffered(), data, splat, .limited(bw.state.chunk_len - 2)); bw.state.chunk_len -= n; return w.consume(n); }, } }