pub struct Message {
pub msg_type_id: u8,
pub msg_stream_id: u32,
pub timestamp: u32,
pub payload: Vec<u8>,
}Expand description
One fully reassembled RTMP message, after chunk-header removal.
Fields§
§msg_type_id: u8§msg_stream_id: u32§timestamp: u32Absolute timestamp in the message-type-specific unit (ms for audio / video / data / command).
payload: Vec<u8>Implementations§
Source§impl Message
impl Message
Sourcepub fn stream_kind(&self) -> MessageStreamKind
pub fn stream_kind(&self) -> MessageStreamKind
Classify Self::msg_stream_id per Message Formats spec §4.1 /
§5 — 0 is the “control stream”, 1..=0x00FF_FFFF is a
NetStream handle, anything with bits set above the §4.1 3-byte
field is reserved.
Sourcepub fn is_control_stream(&self) -> bool
pub fn is_control_stream(&self) -> bool
True iff this message rides the control stream (msg_stream_id == 0). All protocol-control / user-control / NetConnection
command traffic does, per Message Formats spec §5.
Sourcepub fn validate_protocol_control_invariants(&self) -> Result<()>
pub fn validate_protocol_control_invariants(&self) -> Result<()>
Validate the spec §5 mandate that “Protocol control messages
MUST have message stream ID 0 (called as control stream)”. The
protocol-control range is message type IDs 1..=6 (Set Chunk
Size / Abort / Acknowledgement / User Control / Window Ack Size
/ Set Peer Bandwidth) — type id 4 (User Control) is grouped
with the §5 protocol-control set in the same spec section. The
§6.1.2.1 reserved top-byte rule on msg_stream_id is also
enforced here so a single accessor catches both spec invariants.