Skip to content

统一事件订阅、命令完成关联与原始 snoop #3

Description

@sanchuanhehe

What to build

建立一个权威 Event Module,替代 per-fd EventQueue、全局 BroadcastRing、可破坏性 DLI_POLL_EVENT ring 三套并存的事件路径。

状态事件应按 controller id 向每个订阅者 fan-out;请求响应应按 seq 或 cookie 只交给请求者;原始 DLI 观测应进入独立的只读 snoop Seam。slkd、slkmon 和 slkdump 不应通过竞争 pop 同一个全局队列来工作。

Acceptance criteria

  • 两个同时打开的状态订阅者都能看到同一事件,任一消费者退出或变慢不会偷走另一方事件。
  • 命令完成按 controller id 与 seq 或 cookie 精确关联,不被监控工具消费。
  • raw packet snoop 使用独立 Interface,并携带方向、packet type、controller id、时间戳和丢包计数。
  • 控制器事件到达后立即唤醒 poll 或 epoll,不再依赖 50 ms 轮询兜底。
  • 每订阅者有明确背压与 overflow 语义,丢包可观测。
  • 删除 DLI_POLL_EVENT 的全局破坏性消费路径,或在兼容期明确标记 deprecated 且不再作为 libsparklink 主路径。
  • 并发测试覆盖 slkd、slkmon、slkdump 同时运行以及高流量 overflow。

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions