Class ProtocolRouter

java.lang.Object
io.github.theword.queqiao.core.protocol.ProtocolRouter

public class ProtocolRouter extends Object
协议路由器

把 api 字段映射到对应的 AbstractProtocolHandler。

线程安全:处理器表只在构造阶段写入(register 为 private 且仅构造器调用), 之后只读,因此本类构造后即不可变、可被多连接并发使用,且不含任何锁。

不依赖全局状态:日志实现、平台 API 实现与 RCON 执行器均由构造器注入, 不再访问 GlobalContext——使协议层可脱离全局上下文独立测试 (包括此前无法验证的"成功路径")。

Since:
0.6.11
  • Constructor Details

    • ProtocolRouter

      public ProtocolRouter(org.slf4j.Logger logger, HandleApiService handleApiService, RconCommandExecutor rconCommandExecutor)
      构造路由器
      Parameters:
      logger - 日志实现,不得为 null
      handleApiService - 平台 API 实现,允许为 null(未初始化状态)
      rconCommandExecutor - RCON 命令执行器,不得为 null
  • Method Details

    • route

      public Response route(BasePayload payload)
      路由并处理一个请求

      状态码语义:

      • 400 —— 请求本身不合法(payload 为 null、缺少 api 字段、负载解析失败)
      • 404 —— api 未注册
      • 处理器抛出的 ProtocolException —— 使用其自带状态码(如 400 / 500 / 503)
      • 500 —— 真正的服务端未预期异常
      Parameters:
      payload - 请求负载,允许为 null
      Returns:
      响应,永不为 null