pub struct SqliteProcessRegistry { /* private fields */ }Expand description
SQLite-backed process registry for one configured runtime deployment.
It is intentionally separate from Store: session databases persist one
conversation, while this registry persists background process state and
handle visibility across all sessions sharing the registry.
Implementations§
Trait Implementations§
Source§impl ProcessRegistry for SqliteProcessRegistry
impl ProcessRegistry for SqliteProcessRegistry
Source§fn durability_tier(&self) -> DurabilityTier
fn durability_tier(&self) -> DurabilityTier
Durability tier this process registry provides; defaults to
DurabilityTier::Inline.fn register_process<'life0, 'async_trait>(
&'life0 self,
registration: ProcessRegistration,
) -> Pin<Box<dyn Future<Output = Result<ProcessRecord, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn set_external_ref<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
external_ref: ProcessExternalRef,
) -> Pin<Box<dyn Future<Output = Result<ProcessRecord, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_external_ref<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
external_ref: ProcessExternalRef,
) -> Pin<Box<dyn Future<Output = Result<ProcessRecord, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Attach a durable backend reference to a registered process. Read more
fn grant_handle<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_scope: &'life1 SessionScope,
process_id: &'life2 str,
descriptor: ProcessHandleDescriptor,
) -> Pin<Box<dyn Future<Output = Result<ProcessHandleGrant, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn revoke_handle<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_scope: &'life1 SessionScope,
process_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn transfer_handle_grants<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
from_scope: &'life1 SessionScope,
to_scope: &'life2 SessionScope,
process_ids: &'life3 [String],
) -> Pin<Box<dyn Future<Output = Result<(), PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn list_handle_grants<'life0, 'life1, 'async_trait>(
&'life0 self,
session_scope: &'life1 SessionScope,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessHandleGrantEntry>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_live_handle_grants<'life0, 'life1, 'async_trait>(
&'life0 self,
session_scope: &'life1 SessionScope,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessHandleGrantEntry>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn has_handle_grant<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_scope: &'life1 SessionScope,
process_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<bool, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn handle_grants_for_process<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessHandleGrant>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_session_process_state<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ProcessSessionDeleteReport, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_event<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
request: ProcessEventAppendRequest,
) -> Pin<Box<dyn Future<Output = Result<ProcessEventAppendResult, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn events_after<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
after_sequence: u64,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessEvent>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn count_events_through<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
event_type: &'life2 str,
up_to_sequence: u64,
) -> Pin<Box<dyn Future<Output = Result<u64, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn count_events_through<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
event_type: &'life2 str,
up_to_sequence: u64,
) -> Pin<Box<dyn Future<Output = Result<u64, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn recent_events<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessEvent>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn recent_events<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessEvent>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
The most recent
limit events, in ascending sequence order. Read morefn wake_events_after<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
after_sequence: u64,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessEvent>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn complete_process<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
await_output: ProcessAwaitOutput,
) -> Pin<Box<dyn Future<Output = Result<ProcessRecord, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_process_wait<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
wait: WaitState,
) -> Pin<Box<dyn Future<Output = Result<ProcessRecord, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn clear_process_wait<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ProcessRecord, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_process<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Option<ProcessRecord>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_processes<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 ProcessListFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessRecord>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn ack_wake<'life0, 'life1, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
sequence: u64,
) -> Pin<Box<dyn Future<Output = Result<(), PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn list_non_terminal<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessRecord>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_non_terminal<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ProcessRecord>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
All non-terminal process records, in stable
process_id order. Read moreSource§fn claim_process_lease<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
owner: &'life2 LeaseOwnerIdentity,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<ProcessLeaseClaimOutcome, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn claim_process_lease<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
owner: &'life2 LeaseOwnerIdentity,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<ProcessLeaseClaimOutcome, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Claim the durable single-owner lease over a non-terminal process. Read more
Source§fn reclaim_process_lease<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
owner: &'life2 LeaseOwnerIdentity,
observed_holder: &'life3 ProcessLease,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<ProcessLeaseClaimOutcome, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn reclaim_process_lease<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
process_id: &'life1 str,
owner: &'life2 LeaseOwnerIdentity,
observed_holder: &'life3 ProcessLease,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<ProcessLeaseClaimOutcome, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Reclaim an unexpired process lease whose observed holder is definitely
dead according to persisted local-process liveness metadata. Read more
Source§fn renew_process_lease<'life0, 'life1, 'async_trait>(
&'life0 self,
lease: &'life1 ProcessLease,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<ProcessLease, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn renew_process_lease<'life0, 'life1, 'async_trait>(
&'life0 self,
lease: &'life1 ProcessLease,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<ProcessLease, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Extend the expiry of a live lease the caller still owns. Read more
Source§fn complete_process_lease<'life0, 'life1, 'async_trait>(
&'life0 self,
completion: &'life1 ProcessLeaseCompletion,
) -> Pin<Box<dyn Future<Output = Result<(), PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn complete_process_lease<'life0, 'life1, 'async_trait>(
&'life0 self,
completion: &'life1 ProcessLeaseCompletion,
) -> Pin<Box<dyn Future<Output = Result<(), PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Release a lease the caller owns, fenced by the completion’s
(process_id, lease_token). Read moreSource§fn prune_terminal_processes<'life0, 'async_trait>(
&'life0 self,
cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<ProcessPruneReport, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn prune_terminal_processes<'life0, 'async_trait>(
&'life0 self,
cutoff_epoch_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<ProcessPruneReport, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Physically delete terminal process rows whose
updated_at_ms is older
than cutoff_epoch_ms, together with their events, wake acks, handle
grants, and lease rows. Host-scheduled retention: hosts that project
results/events into their own store call this to keep the registry
bounded. Non-terminal rows are never touched. Callers must choose a
retention window comfortably longer than any waiter lifetime — a
pruned process id becomes “unknown process” to late awaits.Auto Trait Implementations§
impl Freeze for SqliteProcessRegistry
impl RefUnwindSafe for SqliteProcessRegistry
impl Send for SqliteProcessRegistry
impl Sync for SqliteProcessRegistry
impl Unpin for SqliteProcessRegistry
impl UnsafeUnpin for SqliteProcessRegistry
impl UnwindSafe for SqliteProcessRegistry
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