#[non_exhaustive]pub enum Block {
ChannelData {
fields: Vec<(String, String)>,
variables: Vec<(String, String)>,
},
Sdp {
direction: SdpDirection,
body: Vec<String>,
},
CodecNegotiation {
media: CodecMedia,
comparisons: Vec<(CodecOffer, CodecOffer)>,
matched: Vec<CodecOffer>,
near_matched: Vec<CodecOffer>,
},
}Expand description
Structured data extracted from a multi-line dump that follows a primary log entry.
Each variant corresponds to a block type that the stream state machine recognizes and reassembles from continuation lines.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ChannelData
Channel variable dump — Channel-* fields and variable_* key-value pairs.
Multi-line variable values (e.g. embedded SDP) are reassembled with \n separators.
Sdp
SDP session description body, collected line by line.
CodecNegotiation
Codec negotiation sequence for one media type. A run only ever covers a
single CodecMedia; audio and video traces never share a block.
Fields
media: CodecMediacomparisons: Vec<(CodecOffer, CodecOffer)>(remote offer, local implementation) for each pair compared.
matched: Vec<CodecOffer>near_matched: Vec<CodecOffer>Codecs kept as fallbacks because only their ptime differed.
Implementations§
Source§impl Block
impl Block
Sourcepub fn field(&self, name: &str) -> Option<&str>
pub fn field(&self, name: &str) -> Option<&str>
Value of a Channel-* field in a CHANNEL_DATA dump, or None if this
block is another kind or never carried that field.
Sourcepub fn variable<V: VariableName>(&self, var: V) -> Option<&str>
pub fn variable<V: VariableName>(&self, var: V) -> Option<&str>
Value of a channel variable in a CHANNEL_DATA dump.
Accepts any of freeswitch-types’ variable-name enums, and spares the
caller from knowing that a dump spells its keys with the variable_
prefix that SessionState::variable
strips — the two surfaces answer the same question the same way.
Source§impl Block
impl Block
Sourcepub fn sdp_codecs(&self) -> Option<Result<SdpCodecs, SdpCodecError>>
pub fn sdp_codecs(&self) -> Option<Result<SdpCodecs, SdpCodecError>>
Codecs described by an SDP body.
None when there is no body to read — another block type, or an SDP
marker that carried none. Sofia logs several (Duplicate SDP,
Processing updated SDP) purely as announcements, and an empty body is
absence rather than a malformed session.
Parsed on each call rather than stored — see docs/design-rationale.md.
Only a session-level failure is an Err: a malformed a=rtpmap or a
broken media section degrades into
SdpCodecs::warnings.
Trait Implementations§
impl Eq for Block
impl StructuralPartialEq for Block
Auto Trait Implementations§
impl Freeze for Block
impl RefUnwindSafe for Block
impl Send for Block
impl Sync for Block
impl Unpin for Block
impl UnsafeUnpin for Block
impl UnwindSafe for Block
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.