Skip to main content

DispatchMessage

Struct DispatchMessage 

Source
pub struct DispatchMessage<T> { /* private fields */ }
Expand description

A live message carrying an owner-thread callback context through a send-safe channel.

Conversion with From<T> creates independent ingress without capturing a callback root. External-thread sends and sends without an active root are also independent ingress. Rooted messages must be processed on their owner’s thread. Foreign-thread destruction releases the root at the next owner channel boundary, callback quiescence check, or dispatcher teardown.

Implementations§

Source§

impl<T> DispatchMessage<T>

Source

pub fn new(message: T, owner: ThreadId) -> Self

Wraps a message, capturing callback ancestry only when called on owner.

owner is the runtime thread that processes messages from this channel.

§Panics

Panics if the owner exhausts its channel context IDs.

Source

pub fn dispatch<R>(self, run: impl FnOnce(T) -> R) -> R

Processes the message under its originating callback context.

§Panics

Panics if a rooted message is processed outside its owner’s thread.

Source

pub fn is_rooted(&self) -> bool

Returns whether this message retains an originating callback root.

Source§

impl DispatchMessage<TradingCommandMessage>

Source

pub fn dispatch_trading(self, before: impl FnMut(&TradingCommandMessage))

Dispatches the command and its deferred children under their captured callback roots.

Calls before immediately before each endpoint dispatch, including child commands.

§Panics

Panics if:

  • A rooted message is processed outside its owner thread.
  • The observer or a command handler panics.

Trait Implementations§

Source§

impl<T: Debug> Debug for DispatchMessage<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Display> Display for DispatchMessage<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> Drop for DispatchMessage<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl<T> From<T> for DispatchMessage<T>

Source§

fn from(message: T) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<T> Freeze for DispatchMessage<T>
where Option<T>: Freeze,

§

impl<T> RefUnwindSafe for DispatchMessage<T>

§

impl<T> Send for DispatchMessage<T>
where Option<T>: Send,

§

impl<T> Sync for DispatchMessage<T>
where Option<T>: Sync,

§

impl<T> Unpin for DispatchMessage<T>
where Option<T>: Unpin,

§

impl<T> UnsafeUnpin for DispatchMessage<T>
where Option<T>: UnsafeUnpin,

§

impl<T> UnwindSafe for DispatchMessage<T>
where Option<T>: UnwindSafe,

Blanket Implementations§

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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.

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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<T> Ungil for T
where T: Send,

§

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