Skip to main content

ConversationActor

Struct ConversationActor 

Source
pub struct ConversationActor { /* private fields */ }

Implementations§

Source§

impl ConversationActor

Source

pub fn handle(&self) -> ConversationHandle

Returns a cloneable command handle.

Source

pub fn pid(&self) -> Result<ParticipantPid, LiminalError>

Returns the current actor PID, restarting after crash when needed.

§Errors

Returns LiminalError when the actor is closed or cannot restart.

Source

pub fn state(&self) -> Result<ConversationState, LiminalError>

Queries actor state.

§Errors

Returns LiminalError when the actor cannot service the query.

Source

pub fn receive_timeout( &self, timeout: Duration, ) -> Result<Envelope, LiminalError>

Receives the next reply from the conversation, bounded by timeout.

Returns LiminalError::ConversationTimeout if no reply arrives in time, or LiminalError::ParticipantCrashed if a linked participant crashes while waiting (the crash drains the pending receive immediately).

§Errors

Returns LiminalError on timeout, participant crash, or actor failure.

Source

pub fn try_take_reply(&self) -> Option<Envelope>

R1(vi)(a): non-blocking drain of one buffered participant reply, if any. The connection polls this on its own slice (woken by the reply-availability notifier) instead of blocking the slice on receive_timeout.

Source

pub fn has_pending_reply(&self) -> bool

Whether a participant reply is buffered without consuming it.

Source

pub fn register_reply_notifier(&self, notifier: Arc<dyn Fn() + Send + Sync>)

R1(vi)(a): installs the reply-availability notifier, fired on the reply queue’s empty→non-empty transition and on terminal actor error. Installed permanently at conversation open; cleared at close/finalize.

Source

pub fn finalize(&self)

Finalizes the conversation without requiring its actor process to run: bounded, non-blocking, and idempotent. Terminates the actor and every participant directly (scheduler tombstone writes, not requests into the actor’s command loop), fails pending receives and queued commands with the typed closed error, and removes both runtime registrations. This is the teardown-path counterpart to ConversationHandle::close: a caller releasing a conversation during ITS OWN teardown must never block on the conversation scheduler being live or responsive.

Source

pub fn notify_on_participant_exit( &self, participant: ParticipantPid, notifier: SyncSender<Instant>, ) -> Result<(), LiminalError>

Registers a one-shot notifier fired the instant participant’s trapped EXIT is processed (carrying the observed Instant — a structural link wakeup, not a poll). If participant is already dead at registration (it crashed before this call), the recorded EXIT instant is replayed immediately, so a crash-before-register is never lost. See [ActorCore::register_exit_notifier].

§Errors

Returns LiminalError when a state or registry lock is poisoned.

Trait Implementations§

Source§

impl Clone for ConversationActor

Source§

fn clone(&self) -> ConversationActor

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ConversationActor

Source§

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

Formats the value using the given formatter. 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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