Quic (elixir_quic v0.16.7)

Copy Markdown View Source

Certificate-based QUIC v1 reliable streams with bounded pull consumption.

See docs/consumer-contract.md for ownership, generation handles, deadlines, admission outcomes and limitations. ALPN is metadata; application protocols are provided by consumers.

Summary

Types

failure()

@type failure() :: {:error, term()} | {:blocked, term()} | {:unknown, reference()}

operation_options()

@type operation_options() :: keyword()

Functions

accept(endpoint, timeout_or_opts \\ 5000)

@spec accept(pid(), non_neg_integer() | operation_options()) ::
  {:ok, Quic.Runtime.ConnectionHandle.t()} | failure()

attach(connection_handle, consumer, opts \\ [])

@spec attach(Quic.Runtime.ConnectionHandle.t(), pid(), keyword()) :: :ok | failure()

capabilities()

@spec capabilities() :: %{
  datagram: true,
  delivery: :pull,
  http3: false,
  io: [:external | :standalone, ...],
  max_write_bytes: 16384,
  resumption: false,
  streams: [:bidi | :uni, ...],
  version: 1
}

client(opts)

@spec client(keyword()) :: GenServer.on_start()

close(connection_handle, code \\ 0, reason \\ <<>>, opts \\ [])

@spec close(
  Quic.Runtime.ConnectionHandle.t(),
  non_neg_integer(),
  binary(),
  operation_options()
) ::
  :ok | failure()

connect(endpoint, remote, opts \\ [])

@spec connect(pid(), {:inet.ip_address(), :inet.port_number()}, operation_options()) ::
  {:ok, Quic.Runtime.ConnectionHandle.t()} | failure()

events(connection_handle, max \\ 32, opts \\ [])

@spec events(Quic.Runtime.ConnectionHandle.t(), pos_integer(), operation_options()) ::
  {:ok, list()} | failure()

info(connection_handle)

@spec info(Quic.Runtime.ConnectionHandle.t()) :: {:ok, map()} | failure()

listen(opts)

@spec listen(keyword()) :: GenServer.on_start()

local(endpoint)

@spec local(pid()) :: {:inet.ip_address(), :inet.port_number()} | {:error, term()}

open_stream(connection_handle, kind, opts \\ [])

@spec open_stream(
  Quic.Runtime.ConnectionHandle.t(),
  :bidi | :uni,
  operation_options()
) ::
  {:ok, Quic.Runtime.StreamHandle.t()} | failure()

operation_status(endpoint, ref)

@spec operation_status(Quic.Runtime.ConnectionHandle.t() | pid(), reference()) ::
  map() | :unknown | failure()

read(stream_handle, max, opts \\ [])

@spec read(Quic.Runtime.StreamHandle.t(), pos_integer(), operation_options()) ::
  {:ok, list()} | failure()

read_datagrams(connection_handle, max \\ 32, opts \\ [])

@spec read_datagrams(
  Quic.Runtime.ConnectionHandle.t(),
  pos_integer(),
  operation_options()
) ::
  {:ok, [binary()]} | failure()

ready(connection_handle)

@spec ready(Quic.Runtime.ConnectionHandle.t()) :: :ready | :pending | failure()

reset_stream(stream_handle, code, opts \\ [])

@spec reset_stream(
  Quic.Runtime.StreamHandle.t(),
  non_neg_integer(),
  operation_options()
) ::
  {:ok, reference()} | failure()

send_datagram(connection_handle, data, opts \\ [])

@spec send_datagram(Quic.Runtime.ConnectionHandle.t(), binary(), operation_options()) ::
  {:ok, reference()} | failure()

send_stream(stream_handle, data, fin \\ false, opts \\ [])

@spec send_stream(
  Quic.Runtime.StreamHandle.t(),
  binary(),
  boolean(),
  operation_options()
) ::
  {:ok, reference()} | failure()

stop_stream(stream_handle, code, opts \\ [])

@spec stop_stream(
  Quic.Runtime.StreamHandle.t(),
  non_neg_integer(),
  operation_options()
) ::
  {:ok, reference()} | failure()