新增服务
以 echosvr 为最小模板(仅一个 app/echosvr_main.cpp),标准服务参照 lobbysvr。
步骤
- 定义协议:在
src/server_frame/protocol/(或组件自己的protocol/)添加 service 与 message; 用atframework.service_options/rpc_options标注module_name/api_name/allow_no_wait。 - 声明生成规则:在服务的
CMakeLists.txt中用generate_for_pb_add_ss_service(SS RPC)/generate_for_pb_add_cs_service(CS RPC)(见src/tools/generate_for_pb_utility.cmake)声明: proto 文件 + 模板(handle_ss_rpc/task_action_ss_rpc/rpc_call_api_for_ss/ CS 变体)+ 输出路径。 - 编写 main:参照
src/lobbysvr/service/app/lobbysvr_main.cpp:
int main(int argc, char *argv[]) {
atfw::atapp::app app;
// logic_config 注入本服务配置加载回调
project::logic_server_setup_common(app);
// 注册生成的 RPC handler
register_handles_for_<yourservice>();
// 挂载 dispatcher 与业务 module
app.add_module(atfw::cs_msg_dispatcher::me());
app.add_module(atfw::ss_msg_dispatcher::me());
app.add_module(atfw::db_msg_dispatcher::me());
app.add_module(<业务 module>);
return app.run(uv_default_loop(), argc, argv, nullptr);
}
- 填充 task action:生成器产出
logic/action/task_action_*骨架,在operator()中写业务逻辑。 - 加入构建:
src/CMakeLists.txt中add_subdirectory(<name>svr)。 - 部署:在
install/cloud-native/charts/添加服务 chart(可复制现有服务),values/各 profile 补充参数;本地运行补充publish/tools/script/config.conf模板。
注意
- 生成物(
*.atfw.gen.*)不入手工编辑;重新生成的触发是 proto/模板变化。 - 模块装配顺序遵循
logic_server_setup_common的约定;自定义 module 依赖 dispatcher 时在其后挂载。 - 新服务默认进入全部构建,没有单独开关。