pub struct EventBus { /* private fields */ }Implementations§
Source§impl EventBus
impl EventBus
pub fn new() -> Self
pub fn register<E, H>(&self, handler: Arc<H>) -> Result<()>
Sourcepub fn subscribe<E>(&self) -> BoxStream<'static, Result<E>>
pub fn subscribe<E>(&self) -> BoxStream<'static, Result<E>>
Live stream of events of type E. Receives events after subscription;
earlier events are not replayed. Slow consumers may lag and drop events
(see broadcast capacity).
Creates the broadcast channel for E on first subscribe. Self::emit
only fans out when a channel already exists (i.e. someone has subscribed).
Sourcepub async fn emit<E>(&self, event: E) -> Result<()>
pub async fn emit<E>(&self, event: E) -> Result<()>
Run registered handlers in order, then fan out to live subscribers.
Handlers run first so a failed handler aborts emit and does not
publish to stream subscribers. Broadcast channels are only used when
created by a prior Self::subscribe — emit alone never allocates one.
pub fn handler_count<E>(&self) -> Result<usize>
Trait Implementations§
Source§impl Injectable for EventBus
impl Injectable for EventBus
Source§fn dependencies() -> Vec<ProviderDependency>
fn dependencies() -> Vec<ProviderDependency>
Dependencies resolved while constructing this provider. Read more
fn create(_container: &Container) -> BoxFuture<'_, Result<Self>>
fn on_module_init(&self) -> BoxFuture<'_, Result<()>>
fn on_bootstrap(&self) -> BoxFuture<'_, Result<()>>
fn on_shutdown(&self) -> BoxFuture<'_, Result<()>>
Auto Trait Implementations§
impl !Freeze for EventBus
impl RefUnwindSafe for EventBus
impl Send for EventBus
impl Sync for EventBus
impl Unpin for EventBus
impl UnsafeUnpin for EventBus
impl UnwindSafe for EventBus
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more