Class BeaconSubscription

java.lang.Object
top.wcpe.beacon.agent.kit.BeaconSubscription
All Implemented Interfaces:
AutoCloseable

public final class BeaconSubscription extends Object implements AutoCloseable
配置变更订阅句柄(AutoCloseable,由调用方保管并 close())。

封装下游订阅样板,解决两类竞态:

  • 注册即重放:底层 EffectiveConfig.onChange(top.wcpe.beacon.agent.api.ConfigChangeListener) 只回调「之后」的变更, 首次注册成功时本句柄会用「当前有效配置」立即重放一次,下游无需自行先读一遍再订阅。
  • 转可用补注册:subscribe 时若 agent 尚未就绪,本句柄不会丢订阅,而是延迟到 agent 由不可用转可用时(含 reload 后的新门面实例)补注册底层监听并重放当前值。

补注册由下游周期调用 pump() 驱动——kit 不自起线程、不碰调度(零三方依赖约束)。 下游在其既有 tick / 心跳里顺手调一次即可,成本极低、线程切换留在下游可控处。

本句柄方法线程安全:内部对状态变更同步,便于「下游 tick 线程驱动 pump」与 「agent 异步线程触发底层回调」并存。回调本身仅转发,重活仍需下游自行切线程。

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    注销底层监听并清空绑定,重复调用安全。
    void
    推进订阅状态:若 agent 已就绪而本句柄尚未绑定到其当前门面,则注册底层监听并重放一次当前值。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • pump

      public void pump()
      推进订阅状态:若 agent 已就绪而本句柄尚未绑定到其当前门面,则注册底层监听并重放一次当前值。

      由下游在既有 tick / 心跳里周期调用,用于补上「subscribe 时 agent 未就绪」「agent reload 换新门面」 两类竞态。已绑定且门面未变时本方法为幂等空操作。close 后为空操作。

    • close

      public void close()
      注销底层监听并清空绑定,重复调用安全。
      Specified by:
      close in interface AutoCloseable