Expand description
Draft-20 control message encoding and decoding.
Key differences from draft-19:
- FETCH (0x16) is a different message. The
Fetch Typefield is gone, and with it the Standalone Fetch and Joining Fetch structures and the Fetch Type registry. Track Namespace and Track Name are inline fields of FETCH, and the range travels in theLOCATION_FILTERparameter (Section 10.13, Figure 16). - PUBLISH_STATE_NOTIFY (0x22) is new and carries no Request ID (Section 10.10, Figure 13).
LOCATION_FILTER(0x21) has a new value shape. The Filter Type enum is gone; the shape comes from how manyvi64fields the value holds (Section 5.1.2).FILL_PARAMETERS(0x23) is new: a length-prefixed parameter carrying a nested parameter block in its own scope (Section 10.2.15).INCLUDE_PROPERTIES(0x35) is new: a uint8 restricted to 0 and 1 (Section 10.2.21).- Parameter applicability moved off
PUBLISH_OK. Six definitions dropped it and several gainedPUBLISH; onlyEXPIRESstill names it. PUBLISH_DONE’sSUBSCRIPTION_ENDEDstatus (0x3) andREQUEST_ERROR’sINVALID_JOINING_REQUEST_ID(0x32) are unassigned here.- Section numbering shifted from Section 10.10 on; every reference in this module is draft-20’s own.
Re-exports§
pub use crate::error::CodecError;pub use crate::error::MAX_GOAWAY_URI_LENGTH;pub use crate::error::MAX_MESSAGE_LENGTH;pub use crate::error::MAX_NAMESPACE_TUPLE_SIZE;pub use crate::error::MAX_REASON_PHRASE_LENGTH;
Modules§
- publish_
done_ codes - Numeric values for the
PublishDonefields. - request_
error_ codes - REQUEST_ERROR error codes with dedicated meaning.
Structs§
- Fetch
- FETCH (0x16), rebuilt in draft-20 (Section 10.13, Figure 16).
- FetchOk
- FETCH_OK (0x18).
end_of_trackis uint8. - GoAway
- GOAWAY (0x10). In draft-20 the Request ID field is removed, so the control-stream and request-stream forms are identical on the wire.
- Namespace
- Namespace
Done - Publish
- Publish
Done - PUBLISH_DONE (0x0B). The wire layout is unchanged from draft-19; what
draft-20 changed is the
Stream Countsentinel, what the count includes, and the removal of status code 0x3. - Publish
Namespace - Publish
Skipped - PUBLISH_SKIPPED (0x0F, renamed from PUBLISH_BLOCKED in draft-20; wire layout is unchanged).
- Publish
State Notify - PUBLISH_STATE_NOTIFY (0x22), new in draft-20 (Section 10.10, Figure 13).
- Redirect
- Optional Redirect structure carried in REQUEST_ERROR with code 0x34.
- Request
Error - REQUEST_ERROR (0x05). Adds an optional Redirect structure when
error_codeis REDIRECT (0x34). - Request
Ok - REQUEST_OK (0x07). Used as a generic OK response and as the alias for PUBLISH_OK / REQUEST_UPDATE_OK / TRACK_STATUS_OK / SUBSCRIBE_NAMESPACE_OK / PUBLISH_NAMESPACE_OK.
- Request
Update - Setup
- Unified SETUP (0x2F00).
- Subscribe
- Subscribe
Namespace - SUBSCRIBE_NAMESPACE (0x50). Subscribes to NAMESPACE / NAMESPACE_DONE
advertisements for namespaces matching
namespace_prefix. Thesubscribe_optionsbyte from draft-17 is removed; namespace subscriptions only produce NAMESPACE / NAMESPACE_DONE. - Subscribe
Ok - SUBSCRIBE_OK (0x04).
- Subscribe
Tracks - SUBSCRIBE_TRACKS (0x51, new in draft-18). Subscribes to PUBLISH messages
for tracks whose namespace matches
namespace_prefix. Carries the FORWARD parameter (which previously lived on SUBSCRIBE_NAMESPACE). - Track
Status
Enums§
Constants§
- FILL_
PARAMETERS - The FILL_PARAMETERS parameter type, draft-20 Section 10.2.15. New in draft-20.
- LOCATION_
FILTER - The LOCATION_FILTER parameter type, draft-20 Section 10.2.9.
Functions§
- decode_
fill_ parameters - Decode the nested parameter block a
FILL_PARAMETERSvalue carries. - decode_
location_ filter - Decode the
vi64fields of a draft-20LOCATION_FILTERvalue. - parameter_
in_ scope - Whether draft-20 lets Message Parameter
keyappear inmessage.