DoxigAlpha

endUnflushed

When using content-length, asserts that the amount of data sent matches the value sent in the header.

Otherwise, transfer-encoding: chunked is being used, and it writes the end-of-stream message with empty trailers.

Respects the value of isEliding to omit all data after the headers.

Does not flush http_protocol_output, but does flush writer.

See also:

  • end
  • endChunked

Function parameters

Parameters

#
w:*BodyWriter

Type definitions in this namespace

Types

#
Method
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
Status
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
TransferEncoding
compression is intentionally omitted here since it is handled in `ContentEncoding`.
BodyWriter
Request or response body.

Source

Implementation

#
pub fn endUnflushed(w: *BodyWriter) Error!void {
    try w.writer.flush();
    switch (w.state) {
        .end => unreachable,
        .content_length => |len| {
            assert(len == 0); // Trips when end() called before all bytes written.
            w.state = .end;
        },
        .none => {},
        .chunk_len => return endChunkedUnflushed(w, .{}),
    }
}