pub struct EventEmitter { /* private fields */ }Expand description
Event publisher that manages event listeners and middleware.
Events flow through three phases:
- Internal listeners see raw events (SDK components like
ClientSyncListener) - Middleware chain can transform or suppress events
- External listeners see processed events (client event handlers)
Implementations§
Source§impl EventEmitter
impl EventEmitter
Sourcepub async fn add_external_listener(
&self,
listener: Box<dyn EventListener>,
) -> String
pub async fn add_external_listener( &self, listener: Box<dyn EventListener>, ) -> String
Sourcepub async fn remove_external_listener(&self, id: &str) -> bool
pub async fn remove_external_listener(&self, id: &str) -> bool
Sourcepub async fn clear_external_listeners(&self)
pub async fn clear_external_listeners(&self)
Remove all external listeners.
Listeners are owned by the emitter, so a listener that references the SDK pins the whole instance; dropping them here on disconnect makes the instance releasable regardless of what listeners capture.
Sourcepub async fn add_internal_listener(
&self,
listener: Box<dyn EventListener>,
) -> String
pub async fn add_internal_listener( &self, listener: Box<dyn EventListener>, ) -> String
Add an internal listener that sees all raw events before middleware processing.
Used by SDK components (e.g., ClientSyncListener) that need to observe events
that middleware may suppress.
Sourcepub async fn remove_internal_listener(&self, id: &str) -> bool
pub async fn remove_internal_listener(&self, id: &str) -> bool
Remove an internal listener by its ID
Sourcepub async fn add_middleware(&self, middleware: Box<dyn EventMiddleware>)
pub async fn add_middleware(&self, middleware: Box<dyn EventMiddleware>)
Add middleware to the event processing chain.
Middleware can transform or suppress events before they reach external listeners.
Middleware is owned by the emitter for its whole lifetime, so it must
not hold a reference back to the emitter (directly or transitively),
or the SDK object graph can never be dropped. Code that needs to emit
must receive the emitter from its caller instead (see
RuntimeEventHandler and TokenConverter::convert).
Sourcepub async fn emit(&self, event: &SdkEvent)
pub async fn emit(&self, event: &SdkEvent)
Emit an event through the three-phase pipeline:
- Internal listeners see the raw event
- Middleware chain can transform or suppress
- External listeners see the processed event
pub async fn emit_synced(&self, synced: &InternalSyncedEvent)
Sourcepub async fn notify_rtsync_failed(&self)
pub async fn notify_rtsync_failed(&self)
Notify that real-time sync has failed. If the first synced event is still buffered and the wallet has already synced, release it immediately instead of waiting for a remote pull that may never arrive.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for EventEmitter
impl !RefUnwindSafe for EventEmitter
impl Send for EventEmitter
impl Sync for EventEmitter
impl Unpin for EventEmitter
impl UnsafeUnpin for EventEmitter
impl !UnwindSafe for EventEmitter
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request