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
impl EventPublisher
Sourcepub fn new() -> Self
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);Sourcepub fn subscribe(
&mut self,
subscriber: impl EventSubscriber + 'static,
event_types: &[&'static str],
)
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,
);Sourcepub fn subscriber_count(&self) -> usize
pub fn subscriber_count(&self) -> usize
Number of registered subscribers.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for EventPublisher
impl !RefUnwindSafe for EventPublisher
impl Send for EventPublisher
impl Sync for EventPublisher
impl Unpin for EventPublisher
impl UnsafeUnpin for EventPublisher
impl !UnwindSafe for EventPublisher
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