Quic.Codec (elixir_quic v0.16.7)

Copy Markdown View Source

Bounded QUIC v1 wire helpers.

Summary

Functions

build_initial(fields)

@spec build_initial(map()) :: {:ok, binary()} | {:error, atom()}

decode_frames(data, opts \\ [])

@spec decode_frames(binary(), keyword()) ::
  {:ok, [map()], binary()} | {:error, atom()}

decode_varint(arg1)

@spec decode_varint(binary()) :: {:ok, non_neg_integer(), binary()} | {:error, atom()}

encode_frames(frames)

@spec encode_frames([map()]) :: {:ok, binary()} | {:error, atom()}

encode_varint(value)

@spec encode_varint(non_neg_integer()) :: {:ok, binary()} | {:error, :varint_overflow}

parse_initial(packet)

@spec parse_initial(binary()) :: {:ok, map()} | {:error, atom()}

reconstruct_packet_number(truncated, largest, pn_len)

@spec reconstruct_packet_number(non_neg_integer(), non_neg_integer(), pos_integer()) ::
  {:ok, non_neg_integer()} | {:error, atom()}

split_datagram(datagram)

@spec split_datagram(binary()) :: {:ok, [binary()]} | {:error, atom()}

validate_frame_levels(frames, level)

@spec validate_frame_levels([map()], :initial | :handshake | :application) ::
  :ok | {:error, term()} | {:wrong_encryption_level, atom(), atom()}

Validate encryption-level constraints that cannot be inferred from frame bytes.