29#ifndef PROTOCORE_QUIC_SERVER_H
30#define PROTOCORE_QUIC_SERVER_H
41#ifndef PC_QUIC_MAX_CONNS
42#define PC_QUIC_MAX_CONNS 2
44#ifndef PC_QUIC_INGEST_RING
45#define PC_QUIC_INGEST_RING 8
48#define PC_HTTP3_PORT 443
50#ifndef PC_QUIC_SCID_LEN
51#define PC_QUIC_SCID_LEN 8
53#ifndef PC_QUIC_IDLE_MS
54#define PC_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 pc_quic_server_begin(uint16_t port,
const QuicServerConfig *cfg, QuicServerRequestFn on_request,
void *app);
89void pc_quic_server_poll(uint32_t now_ms);
96bool pc_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 pc_quic_server_active_conns(
void);
103void pc_quic_server_stop(
void);
110typedef void (*QuicServerOutFn)(
void *ctx,
const uint8_t *datagram,
size_t len,
const char *ip, uint16_t port);
113void pc_quic_server_set_out_sink_cb(QuicServerOutFn fn,
void *ctx);
119bool pc_quic_server_ingest(
const uint8_t *datagram,
size_t len,
const char *ip, uint16_t port);
User-facing configuration for ProtoCore.