Skip to main content

RuntimeHostContext

Trait RuntimeHostContext 

Source
pub trait RuntimeHostContext {
    // Required methods
    fn with_read_typed_raw(
        &self,
        record_kind: RecordKind,
        sys_id: SysId,
        f: &mut dyn FnMut(&[u8]),
    ) -> Result<bool, RuntimeHostError>;
    fn with_read_typed_by_pk_raw(
        &self,
        record_kind: RecordKind,
        pk: &[u8],
        f: &mut dyn FnMut(&[u8]),
    ) -> Result<bool, RuntimeHostError>;
    fn create_typed_raw(
        &mut self,
        record_kind: RecordKind,
        init: &mut dyn FnMut(&mut [u8]),
    ) -> Result<RecordKey, RuntimeHostError>;
    fn update_typed_by_pk_raw(
        &mut self,
        record_kind: RecordKind,
        pk: &[u8],
        f: &mut dyn FnMut(&mut [u8]),
    ) -> Result<bool, RuntimeHostError>;
    fn delete_by_pk_raw(
        &mut self,
        record_kind: RecordKind,
        pk: &[u8],
    ) -> Result<bool, RuntimeHostError>;
    fn emit_typed_event_raw(
        &mut self,
        event_kind: u8,
        payload: &[u8],
    ) -> Result<(), RuntimeHostError>;
    fn for_each_record_key_raw(
        &self,
        kind: RecordKind,
        f: &mut dyn FnMut(RecordKey),
    ) -> Result<(), RuntimeHostError>;

    // Provided method
    fn debug_log(&mut self, _message: String) -> Result<(), RuntimeHostError> { ... }
}
Expand description

Object-safe host capability boundary used by runtime plugins.

Engine internals such as runtime_engine::TxAccess stay on the host side and implement this trait through an adapter. Plugin-facing code should depend on this capability surface instead of any concrete engine transaction type.

Required Methods§

Source

fn with_read_typed_raw( &self, record_kind: RecordKind, sys_id: SysId, f: &mut dyn FnMut(&[u8]), ) -> Result<bool, RuntimeHostError>

Reads a record by system id and passes its bytes to f when found.

Source

fn with_read_typed_by_pk_raw( &self, record_kind: RecordKind, pk: &[u8], f: &mut dyn FnMut(&[u8]), ) -> Result<bool, RuntimeHostError>

Reads a record by primary-key bytes and passes its bytes to f when found.

Source

fn create_typed_raw( &mut self, record_kind: RecordKind, init: &mut dyn FnMut(&mut [u8]), ) -> Result<RecordKey, RuntimeHostError>

Creates a record and initializes its data bytes through init.

Source

fn update_typed_by_pk_raw( &mut self, record_kind: RecordKind, pk: &[u8], f: &mut dyn FnMut(&mut [u8]), ) -> Result<bool, RuntimeHostError>

Updates a record by primary-key bytes in-place when found.

Source

fn delete_by_pk_raw( &mut self, record_kind: RecordKind, pk: &[u8], ) -> Result<bool, RuntimeHostError>

Deletes a record by primary-key bytes.

Source

fn emit_typed_event_raw( &mut self, event_kind: u8, payload: &[u8], ) -> Result<(), RuntimeHostError>

Emits an event payload from the current transaction.

Source

fn for_each_record_key_raw( &self, kind: RecordKind, f: &mut dyn FnMut(RecordKey), ) -> Result<(), RuntimeHostError>

Iterates visible record keys for one record kind.

Provided Methods§

Source

fn debug_log(&mut self, _message: String) -> Result<(), RuntimeHostError>

Emits host-side diagnostic text.

Trait Implementations§

Source§

impl TypedTxContext for dyn RuntimeHostContext + '_

Bridge dyn RuntimeHostContext to TypedTxContext so that command_dispatch!-generated code can operate on plugin-facing host adapters without requiring engine-internal raw transaction capabilities.

Source§

type Error = RuntimeHostError

Host error type.
Source§

fn with_read_typed<R, T, F>( &self, sys_id: SysId, f: F, ) -> Result<Option<T>, Self::Error>
where R: GeneratedRecordAccess, F: FnOnce(R::Access<'_>) -> T,

Reads a generated record by system id.
Source§

fn with_read_typed_by_pk<R, P, T, F>( &self, pk: P, f: F, ) -> Result<Option<T>, Self::Error>
where R: GeneratedRecordAccess, P: AsRef<[u8]>, F: FnOnce(R::Access<'_>) -> T,

Read a record by primary key without mutating it. Read more
Source§

fn create_typed<R, F>(&mut self, init: F) -> Result<RecordKey, Self::Error>
where R: GeneratedRecordAccess, F: for<'b> FnOnce(&mut R::NewBuilder<'b>),

Creates a generated record.
Source§

fn update_typed_by_pk<R, P, T, F>( &mut self, pk: P, f: F, ) -> Result<Option<T>, Self::Error>
where R: GeneratedRecordAccess, P: AsRef<[u8]>, F: for<'b> FnOnce(&mut R::UpdateBuilder<'b>) -> T,

Update a record in-place by primary key. Read more
Source§

fn delete_by_pk<R, P>(&mut self, pk: P) -> Result<bool, Self::Error>
where R: GeneratedRecordAccess, P: AsRef<[u8]>,

Deletes a generated record by primary key.
Source§

fn emit_typed_event<E>(&mut self, payload: Vec<u8>)

Emits a generated event payload.
Source§

fn for_each_record_key(&self, kind: RecordKind, f: &mut dyn FnMut(RecordKey))

Iterates record keys for one record kind.
Source§

fn debug_log(&mut self, message: String)

Emits host-side diagnostic text.
Source§

fn update_or_create_typed_by_pk<R, P, T, FU, FC>( &mut self, pk: P, update: FU, create: FC, ) -> Result<T, Self::Error>
where R: GeneratedRecordAccess, P: AsRef<[u8]>, FU: for<'b> FnOnce(&mut R::UpdateBuilder<'b>) -> T, FC: for<'b> FnOnce(&mut R::NewBuilder<'b>) -> T,

Updates an existing record by primary key or creates a new one.

Implementors§