Skip to main content

RealtimeSessionScheduler

Struct RealtimeSessionScheduler 

Source
pub struct RealtimeSessionScheduler<M, S, R, C, O>
where M: SemanticStateTransaction, M::Error: 'static, S: Clone, R: Clone, C: Completion, O: TransitionOutput,
{ /* private fields */ }
Expand description

Singular fair scheduler for one exact selected realtime model.

Implementations§

Source§

impl<M, S, R, C, O> RealtimeSessionScheduler<M, S, R, C, O>
where M: SemanticStateTransaction, M::Error: 'static, S: Clone, R: Clone, C: Completion, O: TransitionOutput,

Source

pub const fn model_identity(&self) -> &RealtimeModelSessionIdentity

Exact selected model identity shared by every admitted request.

Source

pub fn new( model: RealtimeModelSessionIdentity, limits: SchedulerLimits, ) -> Result<Self, SchedulerError>

Creates one scheduler for both single-request and concurrent production use.

Source

pub fn register( &mut self, request: RequestId, generation: RealtimeGenerationState<M, S, R, C>, ) -> Result<RealtimeSessionIncarnation, RealtimeSessionError>

Registers a new canonical session with a fresh monotonic incarnation.

Source

pub fn resume( &mut self, request: RequestId, released: ReleasedRealtimeSession<M, S, R, C>, ) -> Result<(), RealtimeSessionResumeError<M, S, R, C>>

Resumes released state only under the exact selected model identity.

Source

pub fn enqueue( &mut self, request: RequestId, frame: RealtimeInputFrame, ) -> Result<WorkId, SchedulerError>

Enqueues one portable frame on the singular fair path.

Source

pub fn enqueue_with_deadline( &mut self, request: RequestId, frame: RealtimeInputFrame, deadline: Option<Instant>, ) -> Result<WorkId, SchedulerError>

Enqueues one portable frame with an absolute deadline.

Source

pub fn enqueue_batch( &mut self, request: RequestId, frames: Vec<RealtimeInputFrame>, ) -> Result<Vec<WorkId>, SchedulerError>

Atomically enqueues ordered frames on one request.

Source

pub fn run_local_turn<E>( &mut self, now: Instant, execute: impl FnMut(WorkId, &RealtimeInputFrame, &mut RealtimeSessionBranch<M::Branch, S, R, C>) -> Result<O, E>, ) -> Result<SchedulerProgress<RealtimeInputFrame, O>, SchedulerError>
where E: Error,

Runs one fair local turn using an injected family/backend-independent submission closure.

Source

pub fn run_local_bounded<E>( &mut self, now: Instant, maximum_frames: usize, execute: impl FnMut(WorkId, &RealtimeInputFrame, &mut RealtimeSessionBranch<M::Branch, S, R, C>) -> Result<O, E>, ) -> Result<SchedulerProgress<RealtimeInputFrame, O>, SchedulerError>
where E: Error,

Runs one local turn while admitting at most maximum_frames new transitions.

Source

pub fn run_distributed_turn<T, E>( &mut self, protocol: u64, transport: &T, now: Instant, execute: impl FnMut(WorkId, &RealtimeInputFrame, &mut RealtimeSessionBranch<M::Branch, S, R, C>) -> Result<O, E>, ) -> Result<SchedulerProgress<RealtimeInputFrame, O>, SchedulerError>

Runs one fair turn with mandatory topology-wide schedule and completion consensus.

Source

pub fn replace_sampling<E>( &mut self, request: RequestId, sampling: RealtimeSampling, realize: impl FnOnce(RealtimeSampling) -> Result<(Vec<S>, Option<R>), E>, ) -> Result<(), RealtimeSamplingUpdateError<E, M::Error, C::Error>>

Atomically replaces sampling only when the request owns no queued or branched work.

Source

pub fn cancel(&mut self, request: RequestId) -> Result<(), SchedulerError>

Cancels queued/prepared/submitted work using core scheduler semantics.

Source

pub fn finish(&mut self, request: RequestId) -> Result<(), SchedulerError>

Marks a request finished using core scheduler semantics.

Source

pub fn release( &mut self, request: RequestId, ) -> Result<ReleasedRealtimeSession<M, S, R, C>, SchedulerError>

Releases an idle canonical session for exact later resumption.

Source

pub fn request_status(&self, request: RequestId) -> Option<RequestStatus>

Active or terminal request status.

Source

pub fn queued_for_request(&self, request: RequestId) -> usize

Number of portable frames still queued for one active request.

Source

pub fn forget_terminal( &mut self, request: RequestId, ) -> Result<RequestStatus, SchedulerError>

Removes a terminal identity so the caller may explicitly reuse it.

Source

pub fn request_state( &self, request: RequestId, ) -> Option<&RealtimeSessionState<M, S, R, C>>

Immutable canonical session state, when active.

Source

pub fn report(&self) -> SchedulerReport

Current scheduler telemetry.

Source

pub fn capabilities(&self) -> SchedulerCapabilities

Configured and observed scheduler capabilities.

Auto Trait Implementations§

§

impl<M, S, R, C, O> Freeze for RealtimeSessionScheduler<M, S, R, C, O>

§

impl<M, S, R, C, O> RefUnwindSafe for RealtimeSessionScheduler<M, S, R, C, O>

§

impl<M, S, R, C, O> Send for RealtimeSessionScheduler<M, S, R, C, O>

§

impl<M, S, R, C, O> Sync for RealtimeSessionScheduler<M, S, R, C, O>

§

impl<M, S, R, C, O> Unpin for RealtimeSessionScheduler<M, S, R, C, O>

§

impl<M, S, R, C, O> UnsafeUnpin for RealtimeSessionScheduler<M, S, R, C, O>

§

impl<M, S, R, C, O> UnwindSafe for RealtimeSessionScheduler<M, S, R, C, O>

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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