-
Notifications
You must be signed in to change notification settings - Fork 41
Put SUBSCRIBE_NAMESPACE on a stream, make Namespaces and PUBLISH independent #1344
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 2 commits
25a2c7e
89e380b
abafb02
1a6fe39
7e16420
a30cd61
4b21ba2
9c8cc68
9ae1039
c71ae77
a31e5b3
b5e6711
0132f29
2465b19
bd3ebc8
d58eff5
9e37747
13a3a6f
2e23347
c5e7fbf
49d3c32
4a76892
9949625
b969d51
24b2efe
6aba921
e6a6368
fe00420
a0e6b3b
8d39c86
35695e0
17e0d0a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2885,6 +2885,24 @@ PUBLISH_NAMESPACE Message { | |
|
|
||
| * Parameters: The parameters are defined in {{version-specific-params}}. | ||
|
|
||
| ## NAMESPACE {#message-pub-ns} | ||
|
|
||
| The NAMESPACE message is similar to the PUBLISH_NAMESPACE message, except | ||
| it is in response to a SUBSCRIBE_NAMESPACE request. Because it is never | ||
| sent on the control stream, it can use the same type. | ||
ianswett marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ~~~ | ||
| NAMESPACE Message { | ||
| Type (i) = 0x6, | ||
| Length (16), | ||
|
||
| Track Namespace (..), | ||
| } | ||
| ~~~ | ||
| {: #moq-transport-pub-ns-format title="MOQT NAMESPACE Message"} | ||
ianswett marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| * Track Namespace: Identifies a track's namespace as defined in | ||
| {{track-name}}. | ||
|
|
||
| ## PUBLISH_NAMESPACE_DONE {#message-pub-ns-done} | ||
|
|
||
| The publisher sends the `PUBLISH_NAMESPACE_DONE` control message to indicate its | ||
|
|
@@ -2932,16 +2950,18 @@ PUBLISH_NAMESPACE_CANCEL Message { | |
|
|
||
| ## SUBSCRIBE_NAMESPACE {#message-subscribe-ns} | ||
|
|
||
| The subscriber sends the SUBSCRIBE_NAMESPACE control message to a publisher to | ||
| request the current set of matching published namespaces and `Established` | ||
| subscriptions, as well as future updates to the set. | ||
| The subscriber sends a SUBSCRIBE_NAMESPACE control message on a new | ||
| bidirectional stream to a publisher to request the current set of matching | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How do you distinguish the control stream from this stream?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's a new bidi stream and it starts with the SUBSCRIBE_NAMESPACE message.
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So if the first stream I receive starts with SUBSCRIBE_NAMESPACE, I hold it pending one that starts with CLIENT_SETUP?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Without 0RTT clearly described, which it isn't today, I'm unsure how that could happen?
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah @afrind if right. It depends on if the QUIC library returns streams in stream_id order, but any bidirectional stream should be buffered until the CLIENT_SETUP is processed. In fact, the same is true for any unidirectional streams if pipelining a PUBLISH is valid (debatable with max_request_id), but that's a lot easier to implement.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks, I understand the issue now. Yes, I can call out this potential issue.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. PTAL at 2465b19 |
||
| published namespaces and/or `Established` subscriptions, as well as future | ||
| updates to the set. | ||
|
|
||
| ~~~ | ||
| SUBSCRIBE_NAMESPACE Message { | ||
| Type (i) = 0x11, | ||
| Length (16), | ||
| Request ID (i), | ||
| Track Namespace Prefix (..), | ||
| Subscribe Options (i), | ||
ianswett marked this conversation as resolved.
Show resolved
Hide resolved
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can one send 2 subscribe_namespace with 2 different options
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No, this falls under duplicate prefix text elsewhere. |
||
| Number of Parameters (i), | ||
| Parameters (..) ... | ||
| } | ||
|
|
@@ -2960,15 +2980,19 @@ SUBSCRIBE_NAMESPACE Message { | |
| Track Namespace Prefix consisting of 0 or greater than than 32 Track Namespace | ||
| Fields, it MUST close the session with a `PROTOCOL_VIOLATION`. | ||
|
|
||
|
|
||
| * Subscribe Options: Allows subscribers to request PUBLISH (0x00), | ||
| NAMESPACE (0x01), or both (0x02) for a given SUBSCRIBE_NAMESPACE request. | ||
suhasHere marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| * Parameters: The parameters are defined in {{version-specific-params}}. | ||
|
|
||
| The publisher will respond with REQUEST_OK or | ||
| REQUEST_ERROR. If the SUBSCRIBE_NAMESPACE is successful, the publisher will | ||
| immediately forward existing PUBLISH_NAMESPACE and PUBLISH messages that match | ||
| the Track Namespace Prefix that have not already been sent to this subscriber. | ||
| If the set of matching PUBLISH_NAMESPACE messages changes, the publisher sends | ||
| the corresponding PUBLISH_NAMESPACE or PUBLISH_NAMESPACE_DONE message. | ||
| The publisher will respond with REQUEST_OK or REQUEST_ERROR. If the | ||
|
||
| SUBSCRIBE_NAMESPACE is successful, the publisher will send matching | ||
| NAMESPACE messages on the response stream if they are requested. | ||
|
||
| Also, any matching PUBLISH messages without an active Subscription will be | ||
ianswett marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| sent on the control stream. When there are changes to the namespaces or | ||
| subscriptions being published and the subscriber is subscribed to them, | ||
| the publisher sends the corresponding NAMESPACE, PUBLISH_NAMESPACE_DONE, | ||
ianswett marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| or PUBLISH messages. | ||
|
|
||
| A subscriber cannot make overlapping namespace subscriptions on a single | ||
| session. Within a session, if a publisher receives a SUBSCRIBE_NAMESPACE with a | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't have a strong opinion, but NAMESPACE is shorter