QuicHttp3.Session (elixir_quic_http3 v0.16.0)

View Source

Deterministic HTTP/3 session coordinator over QuicHttp3.Transport.

The session owns no processes. Callers drive readiness and event polling explicitly; transport flow-control outcomes are returned unchanged.

Summary

Types

t()

@type t() :: %QuicHttp3.Session{
  connection: term(),
  control: term(),
  control_stream: term(),
  max_frame: term(),
  next_request: term(),
  peer_streams: term(),
  requests: term(),
  transport: term()
}

Functions

cancel(session, ref)

@spec cancel(t(), reference()) ::
  {:ok, t()} | {:error, term()} | {:blocked, term()} | {:unknown, reference()}

close(arg1)

@spec close(t()) ::
  :ok | {:error, term()} | {:blocked, term()} | {:unknown, reference()}

connect(session, remote, port, opts)

@spec connect(t(), binary() | tuple(), :inet.port_number(), keyword()) ::
  {:ok, t()} | {:error, term()} | {:blocked, term()} | {:unknown, reference()}

new(opts \\ [])

@spec new([{atom(), term()}]) :: {:ok, t()} | {:error, term()}

open(session)

@spec open(t()) ::
  {:ok, t()} | {:error, term()} | {:blocked, term()} | {:unknown, reference()}

poll(session, max)

@spec poll(t(), pos_integer()) ::
  {:ok, t(), [term()]}
  | {:error, term()}
  | {:blocked, term()}
  | {:unknown, reference()}

ready(session)

@spec ready(t()) ::
  :ready
  | :pending
  | {:error, term()}
  | {:blocked, term()}
  | {:unknown, reference()}

request(session)

request(session, fields, body, opts)

@spec request(t(), [QuicHttp3.Qpack.field()], binary(), keyword()) ::
  {:ok, t(), reference()}
  | {:error, term()}
  | {:blocked, term()}
  | {:unknown, reference()}