- 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 集成测试全部通过,编译零警告
74 lines
1.7 KiB
C
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 */
|