Class ProtocolRouter
java.lang.Object
io.github.theword.queqiao.core.protocol.ProtocolRouter
协议路由器
把 api 字段映射到对应的 AbstractProtocolHandler。
线程安全:处理器表只在构造阶段写入(register 为 private 且仅构造器调用),
之后只读,因此本类构造后即不可变、可被多连接并发使用,且不含任何锁。
不依赖全局状态:日志实现、平台 API 实现与 RCON 执行器均由构造器注入,
不再访问 GlobalContext——使协议层可脱离全局上下文独立测试
(包括此前无法验证的"成功路径")。
- Since:
- 0.6.11
-
Constructor Summary
ConstructorsConstructorDescriptionProtocolRouter(org.slf4j.Logger logger, HandleApiService handleApiService, RconCommandExecutor rconCommandExecutor) 构造路由器 -
Method Summary
-
Constructor Details
-
ProtocolRouter
public ProtocolRouter(org.slf4j.Logger logger, HandleApiService handleApiService, RconCommandExecutor rconCommandExecutor) 构造路由器- Parameters:
logger- 日志实现,不得为 nullhandleApiService- 平台 API 实现,允许为 null(未初始化状态)rconCommandExecutor- RCON 命令执行器,不得为 null
-
-
Method Details
-
route
路由并处理一个请求状态码语义:
400—— 请求本身不合法(payload 为 null、缺少 api 字段、负载解析失败)404—— api 未注册- 处理器抛出的
ProtocolException—— 使用其自带状态码(如 400 / 500 / 503) 500—— 真正的服务端未预期异常
- Parameters:
payload- 请求负载,允许为 null- Returns:
- 响应,永不为 null
-