quic_h3_frame (quic v1.3.1)
View SourceHTTP/3 frame encoding and decoding.
HTTP/3 frames use QUIC variable-length integer encoding for frame type and length fields.
Summary
Functions
Decode an HTTP/3 frame from binary. Returns {ok, Frame, Rest} | {error, Reason} | {more, N}.
Decode all frames from binary buffer.
Decode SETTINGS frame payload to settings map.
Decode stream type from unidirectional stream.
Return default HTTP/3 settings.
Encode an HTTP/3 frame to binary.
Encode a CANCEL_PUSH frame.
Encode a DATA frame.
Encode a GOAWAY frame.
Encode a HEADERS frame.
Encode a MAX_PUSH_ID frame.
Encode a PUSH_PROMISE frame.
Encode a SETTINGS frame.
Encode settings map to SETTINGS frame payload.
Encode stream type for unidirectional streams.
Check if a frame type is reserved (grease). Reserved types are 0x1f * N + 0x21 for any non-negative integer N.
Check if a settings identifier is reserved (grease). Reserved identifiers are 0x1f * N + 0x21 for any non-negative integer N.
Types
-type frame() :: {data, binary()} | {headers, binary()} | {cancel_push, non_neg_integer()} | {settings, map()} | {push_promise, non_neg_integer(), binary()} | {goaway, non_neg_integer()} | {max_push_id, non_neg_integer()} | {unknown, non_neg_integer(), binary()}.
Functions
-spec decode(binary()) -> {ok, frame(), binary()} | {error, term()} | {more, non_neg_integer()}.
Decode an HTTP/3 frame from binary. Returns {ok, Frame, Rest} | {error, Reason} | {more, N}.
Decode all frames from binary buffer.
Decode SETTINGS frame payload to settings map.
-spec decode_stream_type(binary()) -> {ok, control | qpack_encoder | qpack_decoder | push | {unknown, non_neg_integer()}, binary()} | {more, non_neg_integer()}.
Decode stream type from unidirectional stream.
-spec default_settings() -> map().
Return default HTTP/3 settings.
Encode an HTTP/3 frame to binary.
-spec encode_cancel_push(non_neg_integer()) -> binary().
Encode a CANCEL_PUSH frame.
Encode a DATA frame.
-spec encode_goaway(non_neg_integer()) -> binary().
Encode a GOAWAY frame.
Encode a HEADERS frame.
-spec encode_max_push_id(non_neg_integer()) -> binary().
Encode a MAX_PUSH_ID frame.
-spec encode_push_promise(non_neg_integer(), binary()) -> binary().
Encode a PUSH_PROMISE frame.
Encode a SETTINGS frame.
Encode settings map to SETTINGS frame payload.
-spec encode_stream_type(control | qpack_encoder | qpack_decoder | push | non_neg_integer()) -> binary().
Encode stream type for unidirectional streams.
-spec is_reserved_frame_type(non_neg_integer()) -> boolean().
Check if a frame type is reserved (grease). Reserved types are 0x1f * N + 0x21 for any non-negative integer N.
-spec is_reserved_setting(non_neg_integer()) -> boolean().
Check if a settings identifier is reserved (grease). Reserved identifiers are 0x1f * N + 0x21 for any non-negative integer N.