NAME

Unblock::HTTP3::Connection - shared HTTP/3 connection implementation

DESCRIPTION

This package contains the shared implementation inherited by Unblock::HTTP3::Client and Unblock::HTTP3::Server.

Applications should construct one of those public classes with new(). Unblock::HTTP3::Connection has no public constructor.

One Client or Server wraps one existing Net::QUIC::Connection. Unblock::HTTP3 owns HTTP/3 state. Net::QUIC owns QUIC and TLS. The caller owns the UDP socket, timer, and event loop.

COMMON OPTIONS

quic is required.

Common constructor options include:

send_buffer_limit
max_field_section_size
max_buffered_body_bytes
max_streaming_body_bytes
receive_body
qpack_max_table_capacity
qpack_blocked_streams
enable_http_datagrams
extension_settings
on_extension_settings
extension_stream_handlers

Server-specific options include:

enable_extended_connect
origins
datagram_request
quic_max_bidi_streams
remembered_local_settings
on_request
on_body
on_request_end
on_error

Client-specific options include remembered_peer_settings.

COMMON METHODS

start() starts HTTP/3 processing.

role() returns client or server.

quic() returns the wrapped Net::QUIC connection.

started(), failed(), error(), and error_code() expose connection state.

next_transaction() and next_informational() provide the optional pull interface.

Settings, extension streams, HTTP Datagrams, ORIGIN, graceful shutdown, and 0-RTT state remain available through the existing HTTP/3-specific methods.

CLIENT REQUESTS

"request" in Unblock::HTTP3::Client accepts the Uniform HTTP request contract.

Useful request options include:

stream_body
receive_body
datagrams
early_data
on_informational
on_response
on_body
on_complete
on_error
on_drain

stream_body => 1 enables the common write() and end() Transaction body API. A hash reference remains available for advanced Body::Stream configuration.

SEE ALSO

Unblock::HTTP3, Unblock::HTTP3::Client, Unblock::HTTP3::Server, Unblock::HTTP3::Transaction

LICENSE

MIT License.