Skip to content

Commit 84bc0c8

Browse files
committed
Refresh transport plan documentation
1 parent 65d19ad commit 84bc0c8

1 file changed

Lines changed: 9 additions & 7 deletions

File tree

docs/transport-plan.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ This separation is important because MOQT draft churn should be isolated to the
7171

7272
- [x] Publish initialization object first
7373
- [x] Publish media objects according to `PublishPlan`
74-
- [ ] Decide and document one stream mapping policy
74+
- [x] Decide and document one stream mapping policy
7575
- [ ] Handle transport write backpressure
7676

7777
### Phase 5: observability and testing
@@ -81,14 +81,14 @@ This separation is important because MOQT draft churn should be isolated to the
8181
- [x] Add loopback integration tests for transport
8282
- [ ] Add interoperability tests against an OpenMOQ-capable endpoint
8383

84-
## Proposed stream mapping
84+
## Stream mapping
8585

86-
Initial recommendation:
86+
Current policy:
8787

8888
- one bidirectional control stream per session
89-
- one unidirectional stream per published object in the first implementation
89+
- one unidirectional stream per published object
9090

91-
That policy is not necessarily optimal long-term, but it is easier to reason about and validate while the control-plane logic is still moving.
91+
This remains intentionally conservative. It keeps object boundaries explicit and makes current draft-specific control and subscriber-serving logic easier to validate. Stream reuse is still a possible future optimization once backpressure handling is in place.
9292

9393
## Interface responsibilities
9494

@@ -149,16 +149,18 @@ Owns:
149149
- The current workspace now compiles picoquic and picotls successfully.
150150
- A loopback smoke test now validates the local picoquic handshake and object publication path when it is run outside restricted sandboxes.
151151
- The session layer now uses a dedicated control-message encoder that keeps draft-14 and draft-16 naming differences out of the transport adapter.
152+
- Subscriber-driven serving is implemented for `--forward 0`, including multitrack publication in publish-plan/media-time order rather than draining one subscribed track completely before the next.
153+
- Incremental downstream `SUBSCRIBE` handling now lets later-arriving tracks join future object servicing without restarting the session or losing interleaving for remaining media objects.
152154

153155
## Key risks
154156

155157
- draft-14 vs draft-16 control differences leaking into transport code
156158
- coupling picoquic callback state too tightly to publish scheduling
157-
- under-specifying how objects map to streams early on
159+
- incomplete backpressure behavior once object volume or pacing pressure increases
158160

159161
## Mitigations
160162

161163
- keep draft-specific message encoding in session code
162164
- keep transport status and callbacks generic
163-
- start with a conservative one-object-per-stream policy
165+
- keep the current one-object-per-stream policy until backpressure and reuse semantics are explicit
164166
- add integration tests before optimizing stream reuse or pacing

0 commit comments

Comments
 (0)