pub struct PersistentRuntimeDriver { /* private fields */ }Expand description
Persistent runtime driver — durable InputState via RuntimeStore.
Implementations§
Source§impl PersistentRuntimeDriver
impl PersistentRuntimeDriver
Sourcepub fn new(runtime_id: LogicalRuntimeId, store: Arc<dyn RuntimeStore>) -> Self
pub fn new(runtime_id: LogicalRuntimeId, store: Arc<dyn RuntimeStore>) -> Self
Create a new persistent runtime driver.
Sourcepub fn inner_ref(&self) -> &EphemeralRuntimeDriver
pub fn inner_ref(&self) -> &EphemeralRuntimeDriver
Get immutable reference to the inner ephemeral driver.
Sourcepub fn start_run(
&mut self,
run_id: RunId,
) -> Result<(), RuntimeStateTransitionError>
pub fn start_run( &mut self, run_id: RunId, ) -> Result<(), RuntimeStateTransitionError>
Start a new run (delegates to inner).
Sourcepub fn complete_run(&mut self) -> Result<RunId, RuntimeStateTransitionError>
pub fn complete_run(&mut self) -> Result<RunId, RuntimeStateTransitionError>
Complete a run (delegates to inner).
Sourcepub fn drain_events(&mut self) -> Vec<RuntimeEventEnvelope>
pub fn drain_events(&mut self) -> Vec<RuntimeEventEnvelope>
Get pending events (delegates to inner).
Sourcepub fn take_wake_requested(&mut self) -> bool
pub fn take_wake_requested(&mut self) -> bool
Check and clear wake flag (delegates to inner).
Sourcepub fn take_process_requested(&mut self) -> bool
pub fn take_process_requested(&mut self) -> bool
Check and clear immediate processing flag (delegates to inner).
Sourcepub fn dequeue_next(&mut self) -> Option<(InputId, Input)>
pub fn dequeue_next(&mut self) -> Option<(InputId, Input)>
Dequeue next input (delegates to inner).
Sourcepub fn stage_input(
&mut self,
input_id: &InputId,
run_id: &RunId,
) -> Result<(), InputStateMachineError>
pub fn stage_input( &mut self, input_id: &InputId, run_id: &RunId, ) -> Result<(), InputStateMachineError>
Stage input (delegates to inner).
Sourcepub fn apply_input(
&mut self,
input_id: &InputId,
run_id: &RunId,
) -> Result<(), InputStateMachineError>
pub fn apply_input( &mut self, input_id: &InputId, run_id: &RunId, ) -> Result<(), InputStateMachineError>
Apply input (delegates to inner).
Sourcepub fn rollback_staged(
&mut self,
input_ids: &[InputId],
) -> Result<(), InputStateMachineError>
pub fn rollback_staged( &mut self, input_ids: &[InputId], ) -> Result<(), InputStateMachineError>
Roll back staged inputs (delegates to inner).
Sourcepub fn consume_inputs(
&mut self,
input_ids: &[InputId],
run_id: &RunId,
) -> Result<(), InputStateMachineError>
pub fn consume_inputs( &mut self, input_ids: &[InputId], run_id: &RunId, ) -> Result<(), InputStateMachineError>
Consume applied inputs without completing a runtime run.
Sourcepub fn forget_input(&mut self, input_id: &InputId)
pub fn forget_input(&mut self, input_id: &InputId)
Remove a previously accepted input from the ledger/queue.
Trait Implementations§
Source§impl RuntimeDriver for PersistentRuntimeDriver
impl RuntimeDriver for PersistentRuntimeDriver
Source§fn accept_input<'life0, 'async_trait>(
&'life0 mut self,
input: Input,
) -> Pin<Box<dyn Future<Output = Result<AcceptOutcome, RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn accept_input<'life0, 'async_trait>(
&'life0 mut self,
input: Input,
) -> Pin<Box<dyn Future<Output = Result<AcceptOutcome, RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Accept an input into the runtime.
Source§fn on_runtime_event<'life0, 'async_trait>(
&'life0 mut self,
event: RuntimeEventEnvelope,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn on_runtime_event<'life0, 'async_trait>(
&'life0 mut self,
event: RuntimeEventEnvelope,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handle a runtime event (from the event bus).
Source§fn on_run_event<'life0, 'async_trait>(
&'life0 mut self,
event: RunEvent,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn on_run_event<'life0, 'async_trait>(
&'life0 mut self,
event: RunEvent,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handle a run event (from core).
Source§fn on_runtime_control<'life0, 'async_trait>(
&'life0 mut self,
command: RuntimeControlCommand,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn on_runtime_control<'life0, 'async_trait>(
&'life0 mut self,
command: RuntimeControlCommand,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Handle a runtime control command.
Source§fn recover<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<RecoveryReport, RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn recover<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<RecoveryReport, RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Recover from a crash/restart.
Source§fn retire<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<RetireReport, RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn retire<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<RetireReport, RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Retire the runtime (no new input, abandon pending).
Source§fn reset<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<ResetReport, RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn reset<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<ResetReport, RuntimeDriverError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Reset the runtime (abandon all pending input, drain queue).
Source§fn runtime_state(&self) -> RuntimeState
fn runtime_state(&self) -> RuntimeState
Get the current runtime state.
Source§fn input_state(&self, input_id: &InputId) -> Option<&InputState>
fn input_state(&self, input_id: &InputId) -> Option<&InputState>
Get the state of a specific input.
Source§fn active_input_ids(&self) -> Vec<InputId>
fn active_input_ids(&self) -> Vec<InputId>
List all non-terminal input IDs.
Auto Trait Implementations§
impl Freeze for PersistentRuntimeDriver
impl !RefUnwindSafe for PersistentRuntimeDriver
impl Send for PersistentRuntimeDriver
impl Sync for PersistentRuntimeDriver
impl Unpin for PersistentRuntimeDriver
impl UnsafeUnpin for PersistentRuntimeDriver
impl !UnwindSafe for PersistentRuntimeDriver
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
Mutably borrows from an owned value. Read more