Skip to main content

EventPublisher

Struct EventPublisher 

Source
pub struct EventPublisher { /* private fields */ }
Expand description

Broadcasts Events to registered EventSubscribers.

Each subscriber is paired with an event type filter at subscription time. Only matching events are dispatched. Each call runs in a spawned task so that slow subscribers do not block the engine.

§Examples

use ironflow_engine::notify::{EventPublisher, WebhookSubscriber, Event};

let mut publisher = EventPublisher::new();
publisher.subscribe(
    WebhookSubscriber::new("https://hooks.example.com/events"),
    &[Event::RUN_STATUS_CHANGED, Event::STEP_FAILED],
);

Implementations§

Source§

impl EventPublisher

Source

pub fn new() -> Self

Create an empty publisher with no subscribers.

§Examples
use ironflow_engine::notify::EventPublisher;

let publisher = EventPublisher::new();
assert_eq!(publisher.subscriber_count(), 0);
Source

pub fn subscribe( &mut self, subscriber: impl EventSubscriber + 'static, event_types: &[&'static str], )

Register a subscriber with an event type filter.

The subscriber is called only for events whose event_type() is in event_types. Pass Event::ALL to receive every event.

Use the Event::* constants for the filter values.

§Examples
use ironflow_engine::notify::{EventPublisher, WebhookSubscriber, Event};

let mut publisher = EventPublisher::new();

// Only on specific event types:
publisher.subscribe(
    WebhookSubscriber::new("https://example.com/hook"),
    &[Event::RUN_STATUS_CHANGED, Event::STEP_FAILED],
);

// On all events:
publisher.subscribe(
    WebhookSubscriber::new("https://example.com/all"),
    Event::ALL,
);
Source

pub fn subscriber_count(&self) -> usize

Number of registered subscribers.

Source

pub fn publish(&self, event: Event)

Broadcast an event to all matching subscribers.

Each matching subscriber runs in its own spawned task. This method returns immediately and never blocks.

Trait Implementations§

Source§

impl Default for EventPublisher

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more