pub struct EslHeaders(/* private fields */);Expand description
A flat header store that decodes FreeSWITCH ARRAY and bracket encoding when answering typed SIP header queries.
Construct with EslHeaders::new or EslHeaders::from_map. Use it
anywhere a HeaderLookup or SipHeaderLookup implementor is
expected:
use freeswitch_types::{EslHeaders, HeaderLookup};
use freeswitch_types::sip_header::SipHeaderLookup;
let mut h = EslHeaders::new();
h.insert("Unique-ID", "abc-123");
h.insert("Call-Info", "ARRAY::<sip:a@example.com>;purpose=icon|:<sip:b@example.com>");
assert_eq!(h.header_str("Unique-ID"), Some("abc-123"));
let ci = h.call_info().unwrap().unwrap();
assert_eq!(ci.entries().len(), 2);HeaderLookup delegates straight to the map; SipHeaderLookup methods
that parse RFC-structured values (call_info, history_info, and any
future multi-value parsers) first peel the FreeSWITCH encoding and then
hand pre-split entries to sip-header. Non-parsing lookups
(sip_header_str, sip_header) return the raw stored value untouched —
the caller sees exactly what FreeSWITCH put on the wire.
Implementations§
Trait Implementations§
Source§impl Clone for EslHeaders
impl Clone for EslHeaders
Source§fn clone(&self) -> EslHeaders
fn clone(&self) -> EslHeaders
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for EslHeaders
impl Debug for EslHeaders
Source§impl Default for EslHeaders
impl Default for EslHeaders
Source§fn default() -> EslHeaders
fn default() -> EslHeaders
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for EslHeaders
impl<'de> Deserialize<'de> for EslHeaders
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl HeaderLookup for EslHeaders
impl HeaderLookup for EslHeaders
Source§fn header_str(&self, name: &str) -> Option<&str>
fn header_str(&self, name: &str) -> Option<&str>
Look up a header by its raw wire name (e.g.
"Unique-ID").Source§fn variable_str(&self, name: &str) -> Option<&str>
fn variable_str(&self, name: &str) -> Option<&str>
Look up a channel variable by its bare name (e.g.
"sip_call_id"). Read moreSource§fn header(&self, name: EventHeader) -> Option<&str>
fn header(&self, name: EventHeader) -> Option<&str>
Look up a header by its
EventHeader enum variant.Source§fn variable(&self, name: impl VariableName) -> Option<&str>
fn variable(&self, name: impl VariableName) -> Option<&str>
Look up a channel variable by its typed enum variant.
Source§fn channel_name(&self) -> Option<&str>
fn channel_name(&self) -> Option<&str>
Channel-Name header (e.g. sofia/internal/1000@domain).Source§fn caller_id_number(&self) -> Option<&str>
fn caller_id_number(&self) -> Option<&str>
Caller-Caller-ID-Number header.Source§fn caller_id_name(&self) -> Option<&str>
fn caller_id_name(&self) -> Option<&str>
Caller-Caller-ID-Name header.Source§fn destination_number(&self) -> Option<&str>
fn destination_number(&self) -> Option<&str>
Caller-Destination-Number header.Source§fn callee_id_number(&self) -> Option<&str>
fn callee_id_number(&self) -> Option<&str>
Caller-Callee-ID-Number header.Source§fn callee_id_name(&self) -> Option<&str>
fn callee_id_name(&self) -> Option<&str>
Caller-Callee-ID-Name header.Source§fn channel_presence_id(&self) -> Option<&str>
fn channel_presence_id(&self) -> Option<&str>
Channel-Presence-ID header (e.g. 1000@example.com).Source§fn presence_call_direction(
&self,
) -> Result<Option<CallDirection>, ParseCallDirectionError>
fn presence_call_direction( &self, ) -> Result<Option<CallDirection>, ParseCallDirectionError>
Presence-Call-Direction header, parsed into a CallDirection.Source§fn event_date_timestamp(&self) -> Option<&str>
fn event_date_timestamp(&self) -> Option<&str>
Event-Date-Timestamp header (microseconds since epoch).Source§fn event_sequence(&self) -> Option<&str>
fn event_sequence(&self) -> Option<&str>
Event-Sequence header (sequential event counter).Source§fn dtmf_duration(&self) -> Option<&str>
fn dtmf_duration(&self) -> Option<&str>
DTMF-Duration header (digit duration in milliseconds).Source§fn dtmf_source(&self) -> Option<&str>
fn dtmf_source(&self) -> Option<&str>
DTMF-Source header (e.g. rtp, inband).Source§fn hangup_cause(&self) -> Result<Option<HangupCause>, ParseHangupCauseError>
fn hangup_cause(&self) -> Result<Option<HangupCause>, ParseHangupCauseError>
Source§fn event_subclass(&self) -> Option<&str>
fn event_subclass(&self) -> Option<&str>
Event-Subclass header for CUSTOM events (e.g. sofia::register).Source§fn sofia_event_subclass(
&self,
) -> Result<Option<SofiaEventSubclass>, ParseSofiaEventSubclassError>
fn sofia_event_subclass( &self, ) -> Result<Option<SofiaEventSubclass>, ParseSofiaEventSubclassError>
Source§fn gateway(&self) -> Option<&str>
fn gateway(&self) -> Option<&str>
Gateway header from sofia::gateway_state / sofia::gateway_add events.Source§fn profile_name(&self) -> Option<&str>
fn profile_name(&self) -> Option<&str>
profile-name header from sofia::sip_user_state events.Source§fn sip_status_code(&self) -> Result<Option<u16>, ParseIntError>
fn sip_status_code(&self) -> Result<Option<u16>, ParseIntError>
Status header (SIP response code) from sofia::gateway_state and
sofia::sip_user_state events.Source§fn gateway_reg_state(
&self,
) -> Result<Option<GatewayRegState>, ParseGatewayRegStateError>
fn gateway_reg_state( &self, ) -> Result<Option<GatewayRegState>, ParseGatewayRegStateError>
Source§fn gateway_ping_status(
&self,
) -> Result<Option<GatewayPingStatus>, ParseGatewayPingStatusError>
fn gateway_ping_status( &self, ) -> Result<Option<GatewayPingStatus>, ParseGatewayPingStatusError>
Source§fn sip_user_ping_status(
&self,
) -> Result<Option<SipUserPingStatus>, ParseSipUserPingStatusError>
fn sip_user_ping_status( &self, ) -> Result<Option<SipUserPingStatus>, ParseSipUserPingStatusError>
Source§fn gateway_name(&self) -> Option<&str>
fn gateway_name(&self) -> Option<&str>
gateway_name header – gateway that received a SIP NOTIFY.Source§fn channel_state(&self) -> Result<Option<ChannelState>, ParseChannelStateError>
fn channel_state(&self) -> Result<Option<ChannelState>, ParseChannelStateError>
Source§fn channel_state_number(
&self,
) -> Result<Option<ChannelState>, ParseChannelStateError>
fn channel_state_number( &self, ) -> Result<Option<ChannelState>, ParseChannelStateError>
Source§fn call_state(&self) -> Result<Option<CallState>, ParseCallStateError>
fn call_state(&self) -> Result<Option<CallState>, ParseCallStateError>
Source§fn answer_state(&self) -> Result<Option<AnswerState>, ParseAnswerStateError>
fn answer_state(&self) -> Result<Option<AnswerState>, ParseAnswerStateError>
Source§fn call_direction(
&self,
) -> Result<Option<CallDirection>, ParseCallDirectionError>
fn call_direction( &self, ) -> Result<Option<CallDirection>, ParseCallDirectionError>
Source§fn priority(&self) -> Result<Option<EslEventPriority>, ParsePriorityError>
fn priority(&self) -> Result<Option<EslEventPriority>, ParsePriorityError>
Parse the
priority header value. Read moreSource§fn timetable(
&self,
prefix: &str,
) -> Result<Option<ChannelTimetable>, ParseTimetableError>
fn timetable( &self, prefix: &str, ) -> Result<Option<ChannelTimetable>, ParseTimetableError>
Extract timetable from timestamp headers with the given prefix. Read more
Source§fn caller_timetable(
&self,
) -> Result<Option<ChannelTimetable>, ParseTimetableError>
fn caller_timetable( &self, ) -> Result<Option<ChannelTimetable>, ParseTimetableError>
Caller-leg channel timetable (
Caller-*-Time headers).Source§fn other_leg_timetable(
&self,
) -> Result<Option<ChannelTimetable>, ParseTimetableError>
fn other_leg_timetable( &self, ) -> Result<Option<ChannelTimetable>, ParseTimetableError>
Other-leg channel timetable (
Other-Leg-*-Time headers).Source§impl PartialEq for EslHeaders
impl PartialEq for EslHeaders
Source§fn eq(&self, other: &EslHeaders) -> bool
fn eq(&self, other: &EslHeaders) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for EslHeaders
impl Serialize for EslHeaders
Source§impl SipHeaderLookup for EslHeaders
impl SipHeaderLookup for EslHeaders
Source§fn sip_header_str(&self, name: &str) -> Option<&str>
fn sip_header_str(&self, name: &str) -> Option<&str>
Look up a SIP header by its canonical name (e.g.
"Call-Info").Source§fn history_info(&self) -> Result<Option<HistoryInfo>, HistoryInfoError>
fn history_info(&self) -> Result<Option<HistoryInfo>, HistoryInfoError>
Source§fn alert_info(&self) -> Result<Option<UriInfo>, UriInfoError>
fn alert_info(&self) -> Result<Option<UriInfo>, UriInfoError>
Parse
Alert-Info into a UriInfo (RFC 3261 §20.4).Source§fn sip_header(&self, name: SipHeader) -> Option<&str>
fn sip_header(&self, name: SipHeader) -> Option<&str>
Look up a SIP header by its
SipHeader enum variant.Source§fn sip_header_all_str<'a>(&'a self, name: &str) -> Vec<&'a str>
fn sip_header_all_str<'a>(&'a self, name: &str) -> Vec<&'a str>
Return all occurrences of a header by canonical name. Read more
Source§fn sip_header_all(&self, name: SipHeader) -> Vec<&str>
fn sip_header_all(&self, name: SipHeader) -> Vec<&str>
Return all occurrences of a header by
SipHeader variant.Source§fn p_asserted_identity(
&self,
) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
fn p_asserted_identity( &self, ) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
Source§fn p_preferred_identity(
&self,
) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
fn p_preferred_identity( &self, ) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
Parse
P-Preferred-Identity into a list of SipHeaderAddr (RFC 3325).Source§fn route(&self) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
fn route(&self) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
Parse
Route into a list of SipHeaderAddr (RFC 3261 §20.34).Source§fn record_route(&self) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
fn record_route(&self) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
Parse
Record-Route into a list of SipHeaderAddr (RFC 3261 §20.30).Source§fn path(&self) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
fn path(&self) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
Parse
Path into a list of SipHeaderAddr (RFC 3327).Source§fn service_route(&self) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
fn service_route(&self) -> Result<Vec<SipHeaderAddr>, ParseSipHeaderAddrError>
Parse
Service-Route into a list of SipHeaderAddr (RFC 3608).Source§fn contact(&self) -> Result<Vec<ContactValue>, ParseSipHeaderAddrError>
fn contact(&self) -> Result<Vec<ContactValue>, ParseSipHeaderAddrError>
Source§fn error_info(&self) -> Result<Option<UriInfo>, UriInfoError>
fn error_info(&self) -> Result<Option<UriInfo>, UriInfoError>
Parse
Error-Info into a UriInfo (RFC 3261 §20.18).Source§fn allow(&self) -> Vec<&str>
fn allow(&self) -> Vec<&str>
Allow header values as individual method tokens (RFC 3261 §20.5).Source§fn supported(&self) -> Vec<&str>
fn supported(&self) -> Vec<&str>
Supported header values as individual option-tag tokens (RFC 3261 §20.37).Source§fn require_header(&self) -> Vec<&str>
fn require_header(&self) -> Vec<&str>
Require header values as individual option-tag tokens (RFC 3261 §20.32).Source§fn proxy_require(&self) -> Vec<&str>
fn proxy_require(&self) -> Vec<&str>
Proxy-Require values as individual option-tag tokens (RFC 3261 §20.29).Source§fn unsupported(&self) -> Vec<&str>
fn unsupported(&self) -> Vec<&str>
Unsupported values as individual option-tag tokens (RFC 3261 §20.40).Source§fn allow_events(&self) -> Vec<&str>
fn allow_events(&self) -> Vec<&str>
Allow-Events values as individual event-type tokens (RFC 6665).Source§fn content_encoding(&self) -> Vec<&str>
fn content_encoding(&self) -> Vec<&str>
Content-Encoding values as individual tokens (RFC 3261 §20.12).Source§fn content_language(&self) -> Vec<&str>
fn content_language(&self) -> Vec<&str>
Content-Language values as individual language tags (RFC 3261 §20.13).Source§fn in_reply_to(&self) -> Vec<&str>
fn in_reply_to(&self) -> Vec<&str>
In-Reply-To values as individual Call-ID tokens (RFC 3261 §20.21).Source§fn via(&self) -> Result<Option<SipVia>, SipViaError>
fn via(&self) -> Result<Option<SipVia>, SipViaError>
Parse
Via into a SipVia (RFC 3261 §20.42).Parse
Proxy-Authorization into a list of SipAuthValue (RFC 3261 §20.28).Source§fn www_authenticate(&self) -> Result<Vec<SipAuthValue>, SipAuthError>
fn www_authenticate(&self) -> Result<Vec<SipAuthValue>, SipAuthError>
Parse
WWW-Authenticate into a list of SipAuthValue (RFC 3261 §20.44).Source§fn proxy_authenticate(&self) -> Result<Vec<SipAuthValue>, SipAuthError>
fn proxy_authenticate(&self) -> Result<Vec<SipAuthValue>, SipAuthError>
Parse
Proxy-Authenticate into a list of SipAuthValue (RFC 3261 §20.27).Source§fn warning(&self) -> Result<Option<SipWarning>, SipWarningError>
fn warning(&self) -> Result<Option<SipWarning>, SipWarningError>
Parse
Warning into a SipWarning (RFC 3261 §20.43).Source§fn security_client(&self) -> Result<Option<SipSecurity>, SipSecurityError>
fn security_client(&self) -> Result<Option<SipSecurity>, SipSecurityError>
Parse
Security-Client into a SipSecurity (RFC 3329).Source§fn security_server(&self) -> Result<Option<SipSecurity>, SipSecurityError>
fn security_server(&self) -> Result<Option<SipSecurity>, SipSecurityError>
Parse
Security-Server into a SipSecurity (RFC 3329).Source§fn security_verify(&self) -> Result<Option<SipSecurity>, SipSecurityError>
fn security_verify(&self) -> Result<Option<SipSecurity>, SipSecurityError>
Parse
Security-Verify into a SipSecurity (RFC 3329).Source§fn accept(&self) -> Result<Option<SipAccept>, SipAcceptError>
fn accept(&self) -> Result<Option<SipAccept>, SipAcceptError>
Parse
Accept into a SipAccept (RFC 3261 §20.1).Source§fn accept_encoding(
&self,
) -> Result<Option<SipAcceptEncoding>, SipAcceptEncodingError>
fn accept_encoding( &self, ) -> Result<Option<SipAcceptEncoding>, SipAcceptEncodingError>
Parse
Accept-Encoding into a SipAcceptEncoding (RFC 3261 §20.2).Source§fn accept_language(
&self,
) -> Result<Option<SipAcceptLanguage>, SipAcceptLanguageError>
fn accept_language( &self, ) -> Result<Option<SipAcceptLanguage>, SipAcceptLanguageError>
Parse
Accept-Language into a SipAcceptLanguage (RFC 3261 §20.3).impl Eq for EslHeaders
impl StructuralPartialEq for EslHeaders
Auto Trait Implementations§
impl Freeze for EslHeaders
impl RefUnwindSafe for EslHeaders
impl Send for EslHeaders
impl Sync for EslHeaders
impl Unpin for EslHeaders
impl UnsafeUnpin for EslHeaders
impl UnwindSafe for EslHeaders
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
Mutably borrows from an owned value. Read more
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§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
Compare self to
key and return true if they are equal.