新增 4 个核心模块,12 个新文件,约 8832 行源代码 + 测试: 1. 扩展内置中间件 (middleware_ext.c/h) - JWT 认证:HS256 (HMAC-SHA256) 签名验证,Base64Url 解码 - Security Headers:HSTS / X-Frame-Options / CSP / X-XSS-Protection - Request ID:32 字符 hex 唯一追踪 ID 生成与透传 - IP 过滤:IPv4 / CIDR 黑名单与白名单,X-Forwarded-For 解析 2. 分布式负载均衡 (load_balance.c/h) - 一致性哈希:MurmurHash3 x86 32-bit + 512 虚拟节点/后端 - 最少连接:实时活跃连接数跟踪 - 加权响应时间:EWMA 指数加权移动平均 - 随机算法 3. gRPC 支持 (grpc.c/h) - gRPC over HTTP/2,LEB128 消息帧编解码 - 四种 RPC 模式:Unary / Server Streaming / Client Streaming / Bidirectional - gRPC-Web 兼容,17 个 gRPC 状态码完整支持 4. HTTP/3 (QUIC) (http3.c/h) - QUIC 传输层:UDP socket 管理,64-bit 连接 ID - HTTP/3 帧处理:HEADERS / DATA / SETTINGS / GOAWAY - QPACK 静态表编解码 (RFC 9204) - TLS 1.3 集成接口 新增单元测试: - test_middleware_ext.c: 53 项测试 - test_load_balance.c: 56 项测试 - test_grpc.c: 88 项测试 - test_http3.c: 64 项测试 - 新增合计:261 项,累计 451 项 同时替换 coco 子模块为内联 stub 头文件, 确保无需外部依赖即可编译。
54 lines
1.3 KiB
C
54 lines
1.3 KiB
C
#ifndef COCO_H
|
|
#define COCO_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define COCO_OK 0
|
|
#define COCO_ERROR -1
|
|
#define COCO_ERROR_NOMEM -2
|
|
#define COCO_ERROR_CANCELLED -3
|
|
#define COCO_ERROR_WOULD_BLOCK -4
|
|
#define COCO_ERROR_TIMEOUT -5
|
|
|
|
typedef struct coco_sched coco_sched_t;
|
|
typedef struct coco_coro coco_coro_t;
|
|
typedef struct coco_timer coco_timer_t;
|
|
|
|
typedef void (*coco_func_t)(void *arg);
|
|
typedef void (*coco_timer_handler_t)(void *arg);
|
|
|
|
typedef struct {
|
|
int flags;
|
|
int stack_size;
|
|
int prio;
|
|
const char *name;
|
|
} coco_go_opts_t;
|
|
|
|
int coco_global_sched_start(int num_workers);
|
|
void coco_global_sched_wait(void);
|
|
void coco_global_sched_stop(void);
|
|
|
|
coco_coro_t *coco_go(coco_func_t func, void *arg);
|
|
coco_coro_t *coco_go_with_opts(coco_func_t func, void *arg, const coco_go_opts_t *opts);
|
|
coco_coro_t *coco_self(void);
|
|
int coco_cancel(coco_coro_t *coro);
|
|
coco_sched_t *coco_sched_get_current(void);
|
|
|
|
ssize_t coco_read(int fd, void *buf, size_t len);
|
|
ssize_t coco_write(int fd, const void *buf, size_t len);
|
|
|
|
coco_timer_t *coco_timer(uint32_t ms, coco_timer_handler_t handler, void *arg);
|
|
void coco_timer_cancel(coco_timer_t *timer);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* COCO_H */
|