Skip to main content

EventEmitter

Struct EventEmitter 

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

Event publisher that manages event listeners and middleware.

Events flow through three phases:

  1. Internal listeners see raw events (SDK components like ClientSyncListener)
  2. Middleware chain can transform or suppress events
  3. External listeners see processed events (client event handlers)

Implementations§

Source§

impl EventEmitter

Source

pub fn new(has_real_time_sync: bool) -> Self

Create a new event emitter

Source

pub async fn add_external_listener( &self, listener: Box<dyn EventListener>, ) -> String

Add an external listener to receive events

§Arguments
  • listener - The listener to add
§Returns

A unique identifier for the listener, which can be used to remove it later

Source

pub async fn remove_external_listener(&self, id: &str) -> bool

Remove an external listener by its ID

§Arguments
  • id - The ID returned from add_listener
§Returns

true if the listener was found and removed, false otherwise

Source

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.

Source

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.

Source

pub async fn remove_internal_listener(&self, id: &str) -> bool

Remove an internal listener by its ID

Source

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).

Source

pub async fn emit(&self, event: &SdkEvent)

Emit an event through the three-phase pipeline:

  1. Internal listeners see the raw event
  2. Middleware chain can transform or suppress
  3. External listeners see the processed event
Source

pub async fn emit_synced(&self, synced: &InternalSyncedEvent)

Source

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§

Source§

impl Default for EventEmitter

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.

§

impl<T> Instrument for T

§

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

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

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

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

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

§

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
§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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