xfy911 bf9787e6e9 feat(phase4): 实现 Phase 4 全部生态扩展模块
新增 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 头文件,
确保无需外部依赖即可编译。
2026-06-10 11:36:45 +08:00

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 */