17#ifndef DETERMINISTICESPASYNCWEBSERVER_H3_FRAME_H
18#define DETERMINISTICESPASYNCWEBSERVER_H3_FRAME_H
30 static constexpr uint8_t H3_DATA = 0x00;
31 static constexpr uint8_t H3_HEADERS = 0x01;
32 static constexpr uint8_t H3_CANCEL_PUSH = 0x03;
33 static constexpr uint8_t H3_SETTINGS = 0x04;
34 static constexpr uint8_t H3_PUSH_PROMISE = 0x05;
35 static constexpr uint8_t H3_GOAWAY = 0x07;
36 static constexpr uint8_t H3_MAX_PUSH_ID = 0x0d;
42 static constexpr uint8_t H3_SETTINGS_QPACK_MAX_TABLE_CAPACITY = 0x01;
43 static constexpr uint8_t H3_SETTINGS_MAX_FIELD_SECTION_SIZE = 0x06;
44 static constexpr uint8_t H3_SETTINGS_QPACK_BLOCKED_STREAMS = 0x07;
58 uint64_t qpack_max_table_capacity;
59 uint64_t max_field_section_size;
60 uint64_t qpack_blocked_streams;
64bool h3_frame_parse(
const uint8_t *buf,
size_t len, H3Frame *out);
67size_t h3_frame_write_header(uint8_t *out,
size_t cap, uint64_t type, uint64_t length);
70bool h3_frame_type_reserved(uint64_t type);
73void h3_settings_defaults(H3Settings *s);
75bool h3_parse_settings(
const uint8_t *payload,
size_t len, H3Settings *s);
80size_t h3_build_data(uint8_t *out,
size_t cap,
const uint8_t *data,
size_t len);
82size_t h3_build_headers(uint8_t *out,
size_t cap,
const uint8_t *block,
size_t len);
84size_t h3_build_settings(uint8_t *out,
size_t cap,
const uint64_t *ids,
const uint64_t *vals,
size_t n);
86size_t h3_build_goaway(uint8_t *out,
size_t cap, uint64_t stream_id);
User-facing configuration for DeterministicESPAsyncWebServer.