NAME

Unblock::HTTP3 - non-blocking HTTP/3 protocol engine for Perl

SYNOPSIS

use Unblock::HTTP3::Connection;
use Uniform::HTTP::Request;

my $h3 = Unblock::HTTP3::Connection->client(
    quic => $quic,
);

$h3->start;

my $tx = $h3->request(
    Uniform::HTTP::Request->new(
        method    => 'GET',
        target    => '/',
        scheme    => 'https',
        authority => 'example.com',
    ),
);

DESCRIPTION

Unblock::HTTP3 is an HTTP/3 protocol engine.

It sits above Net::QUIC and uses Uniform::HTTP request and response objects. It does not own UDP sockets, timers, TLS configuration, or an event loop.

libnghttp3 is supplied through Alien::nghttp3 and is used for HTTP/3 framing and QPACK.

The main public objects are Unblock::HTTP3::Connection and Unblock::HTTP3::Transaction. Streaming bodies, Capsules, HTTP Datagrams, Extended CONNECT, extension SETTINGS, extension streams, priorities, graceful shutdown, and replay-aware 0-RTT are built around those objects.

MODULES

Unblock::HTTP3::Connection

One HTTP/3 connection over one Net::QUIC connection.

Unblock::HTTP3::Transaction

One HTTP/3 request stream and its response.

Unblock::HTTP3::Request

Optional thin subclass of Uniform::HTTP::Request with HTTP/3 helpers.

Unblock::HTTP3::Response

Optional thin subclass of Uniform::HTTP::Response with HTTP/3 diagnostics.

Unblock::HTTP3::Body::Stream

Writable outgoing body stream.

Unblock::HTTP3::Body::Reader

Readable incoming body stream.

SEE ALSO

Net::QUIC, Uniform::HTTP, Alien::nghttp3

AUTHOR

Joshua S. Day

LICENSE

This software is available under the MIT License.