Class AbstractProtocolHandler<P,R>

java.lang.Object
io.github.theword.queqiao.core.protocol.AbstractProtocolHandler<P,R>
Type Parameters:
P - 负载类型
R - 返回类型
Direct Known Subclasses:
BroadcastHandler, GetStatusHandler, SendActionBarHandler, SendCommandHandler, SendPrivateMessageHandler, SendRconCommandHandler, SendTitleHandler

public abstract class AbstractProtocolHandler<P,R> extends Object
协议处理器抽象基类

线程安全约束(重要):处理器实例由 ProtocolRouter 在构造阶段创建一次, 随后在多个连接、多个线程之间共享。因此实现必须无状态—— 不得持有任何随请求变化的字段。

全部输入应来自方法参数,输出通过返回值表达。 违反该约束会引入静默的数据竞争:不同连接的请求会互相污染中间状态。

依赖来源:日志实现与平台 API 实现均由 ProtocolRouter 注入, 处理器不应访问 GlobalContext—— 那会让协议层依赖全局状态、无法独立测试(连"成功路径"都测不到)。

Since:
0.6.11
  • Field Details

    • logger

      protected final org.slf4j.Logger logger
      日志实现,由 ProtocolRouter 注入
    • handleApiService

      protected final HandleApiService handleApiService
      平台 API 实现,由 ProtocolRouter 注入

      允许为 null:运行时空对象(尚未 init)状态下平台实现尚未注入, 但该状态下不存在任何连接,因此处理器不可能被调用。

  • Constructor Details

    • AbstractProtocolHandler

      protected AbstractProtocolHandler(org.slf4j.Logger logger, HandleApiService handleApiService, Class<P> payloadType)
  • Method Details