Skip to content

Final:ADR-0002 事务层设计 + README 全量重写 - #12

Draft
lixuanqun wants to merge 1 commit into
cursor/gb28181-3c36from
cursor/finalize-3c36
Draft

Final:ADR-0002 事务层设计 + README 全量重写#12
lixuanqun wants to merge 1 commit into
cursor/gb28181-3c36from
cursor/finalize-3c36

Conversation

@lixuanqun

Copy link
Copy Markdown
Owner

概述

整个待实现清单完成后的收尾:补一份事务层设计 ADR,把决策定型;重写 README 让新人 5 分钟能跑起来。

🔗 stacked on PR #11 — 这是 stack 顶端,链路上 7 个 PR 全部 merge 后 main 即包含完整协议栈。

ADR-0002 — 事务层设计

7 节,覆盖:

  • 为何选 四个独立 FSM 而非通用状态机
  • 为何用 ScheduledExecutorService 而非自实现 HashedWheelTimer
  • 事务键的三元组结构和 ACK 匹配特殊规则
  • 为何 CAS + 同步代码(拥抱 ADR-0001 的虚拟线程)
  • TU listener 接口设计取舍
  • MessageSender SPI 与 transport 解耦
  • 何时重评估:100K+ 并发、PRACK 引入、事务持久化

README 重写

新版面包含:

  • 完整模块图(10 个模块)
  • 关键决策表 + ADR 链接
  • 5 段可直接复制的代码:parse/encode、UDP 传输启动、REGISTER + Digest、OPTIONS probe、GB28181 Keepalive
  • 路线图:Phase 0-5 + 7 标记完成
  • 工程化清单(gitattributes、enforcer、CI、ADR 制度)

PR 链路全貌

main
 └── #2  骨架 + ADR-0001                    
      └── #3  RFC 4475 fixture 基础设施     
           └── #4  SipParser 实装           
                └── #5  SipEncoder + roundtrip
                     └── #6  SipUriParser   
                          └── #7  typed headers (Via/NameAddr/CSeq/Contact)
                               └── #8  NIO UDP + TCP transport
                                    └── #9  事务层 4 FSM
                                         └── #10 Dialog + REGISTER + Digest
                                              └── #11 GB28181 应用层
                                                   └── #12 本 PR — ADR-0002 + README

最终状态

mvn -B verify → 10 modules SUCCESS, 169 tests, 0 failures
Module tests
sip-message 10
sip-codec 69
sip-transport-api
sip-transport-nio 7
sip-transaction 18
sip-dialog 5
sip-ua 12
sip-gb28181 11
sip-compliance-tests 34
total 169
Open in Web Open in Cursor 

ADR-0002(事务层设计)
- 四 FSM 独立而非通用:状态名重叠但 RFC 语义不同
- 时间轮:ScheduledExecutorService + 虚拟线程派发
- 事务键 (branch, sent-by, method) + RFC 3261 magic cookie 强制
- 同步代码风格 FSM(CAS 状态迁移,无事件循环)
- MessageSender 单方法 SPI 解耦 transport
- 列出何时重评估 + 关键 RFC §17 行为映射

README 重写
- 完整模块结构(含 sip-gb28181 第 10 模块)
- 关键决策链接到 ADR-0001 / ADR-0002
- 5 段快速上手代码:解析编码 / UDP 传输 / REGISTER / OPTIONS / GB28181
- 路线图:phase 0-5、7 标记完成,8-10 待办
- 工程化:169 测试当前规模、CI 配置、文件级约定

docs/adr/README.md:ADR 索引新增 0002 条目。

Co-authored-by: li xuanqun <793005378@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants