DoxigAlpha

sendBodyUnflushed

Transfers the HTTP head over the connection, which is not flushed until BodyWriter.flush or BodyWriter.end is called.

See also:

  • sendBody

Function parameters

Parameters

#
r:*Request
buffer:[]u8

A Least-Recently-Used cache of open connections to be reused.

Types

#
ConnectionPool
A Least-Recently-Used cache of open connections to be reused.

Release all associated resources with the client.

Functions

#
deinit
Release all associated resources with the client.
initDefaultProxies
Populates `http_proxy` and `https_proxy` via standard proxy environment variables.
connectTcp
Reuses a `Connection` if one matching `host` and `port` is already open.
connectUnix
Connect to `path` as a unix domain socket.
connectProxied
Connect to `proxied_host:proxied_port` using the specified proxy with HTTP
connect
Connect to `host:port` using the specified protocol.
request
Open a connection to the host specified by `uri` and prepare to send a HTTP request.
fetch
Perform a one-shot HTTP request with the provided options.

Error sets in this namespace

Error Sets

#

= std.options.http_disable_tls

Values

#
disable_tls
= std.options.http_disable_tls

Source

Implementation

#
pub fn sendBodyUnflushed(r: *Request, buffer: []u8) Writer.Error!http.BodyWriter {
    assert(r.method.requestHasBody());
    try sendHead(r);
    const http_protocol_output = r.connection.?.writer();
    return switch (r.transfer_encoding) {
        .chunked => .{
            .http_protocol_output = http_protocol_output,
            .state = .init_chunked,
            .writer = .{
                .buffer = buffer,
                .vtable = &.{
                    .drain = http.BodyWriter.chunkedDrain,
                    .sendFile = http.BodyWriter.chunkedSendFile,
                },
            },
        },
        .content_length => |len| .{
            .http_protocol_output = http_protocol_output,
            .state = .{ .content_length = len },
            .writer = .{
                .buffer = buffer,
                .vtable = &.{
                    .drain = http.BodyWriter.contentLengthDrain,
                    .sendFile = http.BodyWriter.contentLengthSendFile,
                },
            },
        },
        .none => .{
            .http_protocol_output = http_protocol_output,
            .state = .none,
            .writer = .{
                .buffer = buffer,
                .vtable = &.{
                    .drain = http.BodyWriter.noneDrain,
                    .sendFile = http.BodyWriter.noneSendFile,
                },
            },
        },
    };
}