Skip to main content

EventSubscription

Struct EventSubscription 

Source
#[non_exhaustive]
pub struct EventSubscription { /* private fields */ }
Expand description

Declarative description of an ESL event subscription.

Captures the event format, event types, custom subclasses, and filters as a single unit. Useful for config-driven subscriptions and reconnection patterns where the caller needs to rebuild subscriptions from a saved description.

§Wire safety

Builder methods validate inputs against ESL wire injection risks. Custom subclasses reject \n, \r, spaces, and empty strings. Filter headers and values reject \n and \r.

§Example

use freeswitch_types::{EventSubscription, EventFormat, EslEventType, EventHeader};

let sub = EventSubscription::new(EventFormat::Plain)
    .events(EslEventType::CHANNEL_EVENTS)
    .event(EslEventType::Heartbeat)
    .custom_subclass("sofia::register").unwrap()
    .filter(EventHeader::CallDirection, "inbound").unwrap();

assert!(!sub.is_empty());
assert!(!sub.is_all());

Implementations§

Source§

impl EventSubscription

Source

pub fn new(format: EventFormat) -> Self

Create an empty subscription with the given format.

Source

pub fn all(format: EventFormat) -> Self

Create a subscription for all events.

Source

pub fn event(self, event: EslEventType) -> Self

Add a single event type.

Source

pub fn events<T: IntoIterator<Item = impl Borrow<EslEventType>>>( self, events: T, ) -> Self

Add multiple event types (e.g. from group constants like EslEventType::CHANNEL_EVENTS).

Source

pub fn custom_subclass( self, subclass: impl Into<String>, ) -> Result<Self, EventSubscriptionError>

Add a custom subclass (e.g. "sofia::register").

Returns Err if the subclass contains spaces, newlines, or is empty.

Source

pub fn custom_subclasses( self, subclasses: impl IntoIterator<Item = impl Into<String>>, ) -> Result<Self, EventSubscriptionError>

Add multiple custom subclasses.

Returns Err on the first invalid subclass.

Source

pub fn filter( self, header: EventHeader, value: impl Into<String>, ) -> Result<Self, EventSubscriptionError>

Add a filter with a typed header.

The header enum is always valid; only the value is validated.

Source

pub fn filter_raw( self, header: impl Into<String>, value: impl Into<String>, ) -> Result<Self, EventSubscriptionError>

Add a filter with raw header and value strings.

Both header and value are validated against newline injection.

Source

pub fn with_format(self, format: EventFormat) -> Self

Change the event format.

Source

pub fn format(&self) -> EventFormat

The event format.

Source

pub fn format_mut(&mut self) -> &mut EventFormat

Mutable reference to the event format.

Source

pub fn event_types(&self) -> &[EslEventType]

The subscribed event types.

Source

pub fn event_types_mut(&mut self) -> &mut Vec<EslEventType>

Mutable access to the event types list.

Source

pub fn custom_subclass_list(&self) -> &[String]

The subscribed custom subclasses.

Source

pub fn custom_subclasses_mut(&mut self) -> &mut Vec<String>

Mutable access to the custom subclasses list.

Source

pub fn filters(&self) -> &[(String, String)]

The event filters as (header, value) pairs.

Source

pub fn filters_mut(&mut self) -> &mut Vec<(String, String)>

Mutable access to the filters list.

Source

pub fn is_all(&self) -> bool

Whether the subscription includes all events.

Source

pub fn is_empty(&self) -> bool

Whether the subscription has no events and no custom subclasses.

Source

pub fn to_event_string(&self) -> Option<String>

Build the event string for the ESL event command.

Returns None if no events or custom subclasses are configured. Returns Some("ALL") if EslEventType::All is present. Otherwise returns space-separated event names with custom subclasses appended after a CUSTOM token.

Trait Implementations§

Source§

impl Clone for EventSubscription

Source§

fn clone(&self) -> EventSubscription

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EventSubscription

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for EventSubscription

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for EventSubscription

Source§

fn eq(&self, other: &EventSubscription) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for EventSubscription

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for EventSubscription

Source§

impl StructuralPartialEq for EventSubscription

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,