cocoon/server.h
xfy911 528291c7e5 feat(server): SIGHUP 配置热重载
- server.h/server.c: 新增 server_request_reload() 和 server_reload_config()

- server_create() 新增 config_file_path 参数

- 热重载范围: root_dir, log_level, access_log, gzip/brotli, timeout, max_connections, vhosts, proxies, healthcheck

- 保守策略: 不释放旧字符串指针,避免活跃连接竞态

- accept_loop() 在 accept() 后也检查 reload_requested,确保新连接使用最新配置

- main.c: 新增 sighup_handler() 注册 SIGHUP 信号

- tests/integration_test.sh: 新增 SIGHUP 热重载集成测试 (3项)

- 190 单元测试 + 109 集成测试全部通过,编译零警告
2026-06-10 03:41:10 +08:00

74 lines
1.7 KiB
C

/**
* server.h - 服务器核心模块接口
*
* @author xfy
*/
#ifndef COCOON_SERVER_H
#define COCOON_SERVER_H
#include "cocoon.h"
#include <stdint.h>
/**
* server_context_t - 服务器运行时上下文
*
* 包含监听 socket、配置、运行状态等。
*/
typedef struct server_context server_context_t;
/**
* server_request_reload - 请求配置热重载
*
* 设置热重载标志,由 accept_loop 在下次迭代时执行。
* 安全地从信号处理器中调用。
*
* @param ctx 服务器上下文
*/
void server_request_reload(server_context_t *ctx);
/**
* server_reload_config - 热重载配置
*
* 重新加载配置文件,应用可热重载的配置项。
* 不可热重载的项(端口、线程数等)如有变化会日志提示。
*
* @param ctx 服务器上下文
*/
void server_reload_config(server_context_t *ctx);
/**
* server_start - 启动服务器(阻塞直到 stop 被调用)
*
* @param ctx 服务器上下文
* @return COCOON_OK 成功,负值错误码
*/
int server_start(server_context_t *ctx);
/**
* server_stop - 请求服务器停止
*
* 设置停止标志,等待当前连接处理完毕后退出。
*
* @param ctx 服务器上下文
*/
void server_stop(server_context_t *ctx);
/**
* server_create - 创建服务器上下文
*
* @param config 配置指针
* @param config_file_path 配置文件路径(用于热重载),可为 NULL
* @return 服务器上下文,失败返回 NULL
*/
server_context_t *server_create(const cocoon_config_t *config, const char *config_file_path);
/**
* server_destroy - 销毁服务器上下文
*
* @param ctx 服务器上下文
*/
void server_destroy(server_context_t *ctx);
#endif /* COCOON_SERVER_H */