29#ifndef DETERMINISTICESPASYNCWEBSERVER_QUIC_SERVER_H
30#define DETERMINISTICESPASYNCWEBSERVER_QUIC_SERVER_H
41#ifndef DETWS_QUIC_MAX_CONNS
42#define DETWS_QUIC_MAX_CONNS 2
44#ifndef DETWS_QUIC_INGEST_RING
45#define DETWS_QUIC_INGEST_RING 8
47#ifndef DETWS_HTTP3_PORT
48#define DETWS_HTTP3_PORT 443
50#ifndef DETWS_QUIC_SCID_LEN
51#define DETWS_QUIC_SCID_LEN 8
53#ifndef DETWS_QUIC_IDLE_MS
54#define DETWS_QUIC_IDLE_MS 30000
63typedef void (*QuicServerRequestFn)(
void *app, uint32_t conn_id, uint64_t stream_id,
const char *method,
64 const char *path,
const char *authority,
const uint8_t *body,
size_t body_len);
67struct QuicServerConfig
69 const uint8_t *cert_der;
71 uint8_t ed25519_seed[32];
72 void (*rng)(uint8_t *out,
size_t len);
81bool quic_server_begin(uint16_t port,
const QuicServerConfig *cfg, QuicServerRequestFn on_request,
void *app);
89void quic_server_poll(uint32_t now_ms);
96bool quic_server_respond(uint32_t conn_id, uint64_t stream_id,
int status,
const char *content_type,
97 const uint8_t *body,
size_t body_len);
100uint8_t quic_server_active_conns(
void);
103void quic_server_stop(
void);
110typedef void (*QuicServerOutFn)(
void *ctx,
const uint8_t *datagram,
size_t len,
const char *ip, uint16_t port);
113void quic_server_set_out_sink(QuicServerOutFn fn,
void *ctx);
119bool quic_server_ingest(
const uint8_t *datagram,
size_t len,
const char *ip, uint16_t port);
User-facing configuration for DeterministicESPAsyncWebServer.
HTTP/3 application engine over QUIC streams (RFC 9114).
Stateful QUIC v1 server connection engine (RFC 9000 / RFC 9001).