Constants, frame types, error codes, settings, and shared types for HTTP/2 (RFC 7540 / RFC 9113).
Centralises all wire protocol constants so other modules import numeric values by name rather than scattering magic numbers.
| Constant | Value | Description |
|---|---|---|
FrameData |
0 | DATA frame |
FrameHeaders |
1 | HEADERS frame |
FramePriority |
2 | PRIORITY frame |
FrameRstStream |
3 | RST_STREAM frame |
FrameSettings |
4 | SETTINGS frame |
FramePushPromise |
5 | PUSH_PROMISE frame |
FramePing |
6 | PING frame |
FrameGoaway |
7 | GOAWAY frame |
FrameWindowUpdate |
8 | WINDOW_UPDATE frame |
FrameContinuation |
9 | CONTINUATION frame |
| Constant | Value | Used By |
|---|---|---|
FlagEndStream |
1 | DATA, HEADERS |
FlagAck |
1 | SETTINGS, PING |
FlagEndHeaders |
4 | HEADERS, CONTINUATION |
FlagPadded |
8 | DATA, HEADERS |
FlagPriority |
32 | HEADERS |
ErrNoError (0) through ErrHttp11Required (13) per RFC 7540 Section 7.
SetHeaderTableSize (1) through SetMaxHeaderListSize (6) with default values matching RFC 7540 Section 6.5.2.
7 states (StIdle..StClosed) and 9 events (EvSendH..EvRecvPP) for the per-stream state machine.
6 states (ConnIdle..ConnClosed) and 9 events (CEvSendPreface..CEvConnError).
TYPE FrameHeader = RECORD
length: CARDINAL; (* 24-bit payload length *)
ftype: CARDINAL; (* frame type 0..255 *)
flags: CARDINAL; (* frame flags 0..255 *)
streamId: CARDINAL; (* 31-bit stream identifier *)
END;
TYPE Settings = RECORD
headerTableSize: CARDINAL;
enablePush: CARDINAL;
maxConcurrentStreams: CARDINAL;
initialWindowSize: CARDINAL;
maxFrameSize: CARDINAL;
maxHeaderListSize: CARDINAL;
END;
TYPE HeaderEntry = RECORD
name: ARRAY [0..127] OF CHAR;
nameLen: CARDINAL;
value: ARRAY [0..4095] OF CHAR;
valLen: CARDINAL;
END;
PROCEDURE InitDefaultSettings(VAR s: Settings);
Fill a Settings record with RFC 7540 default values.