pub struct ChainRuntimeContext<S> { /* private fields */ }Expand description
An implementation of ExecutionRuntimeContext suitable for the core protocol.
Trait Implementations§
Source§impl<S: Clone> Clone for ChainRuntimeContext<S>
impl<S: Clone> Clone for ChainRuntimeContext<S>
Source§fn clone(&self) -> ChainRuntimeContext<S>
fn clone(&self) -> ChainRuntimeContext<S>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<S: Storage> ExecutionRuntimeContext for ChainRuntimeContext<S>
impl<S: Storage> ExecutionRuntimeContext for ChainRuntimeContext<S>
Source§fn thread_pool(&self) -> &StdArc<ThreadPool> ⓘ
fn thread_pool(&self) -> &StdArc<ThreadPool> ⓘ
Returns the thread pool used to run blocking work.
Source§fn execution_runtime_config(&self) -> ExecutionRuntimeConfig
fn execution_runtime_config(&self) -> ExecutionRuntimeConfig
Returns the configuration options for the execution runtime.
Source§fn user_contracts(&self) -> &StdArc<HashMap<ApplicationId, UserContractCode>> ⓘ
fn user_contracts(&self) -> &StdArc<HashMap<ApplicationId, UserContractCode>> ⓘ
Returns the cache of loaded user contracts.
Source§fn user_services(&self) -> &StdArc<HashMap<ApplicationId, UserServiceCode>> ⓘ
fn user_services(&self) -> &StdArc<HashMap<ApplicationId, UserServiceCode>> ⓘ
Returns the cache of loaded user services.
Source§fn get_user_contract<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
description: &'life1 ApplicationDescription,
txn_tracker: &'life2 TransactionTracker,
) -> Pin<Box<dyn Future<Output = Result<UserContractCode, ExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get_user_contract<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
description: &'life1 ApplicationDescription,
txn_tracker: &'life2 TransactionTracker,
) -> Pin<Box<dyn Future<Output = Result<UserContractCode, ExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Loads the contract for the given application, instantiating it if necessary.
Source§fn get_user_service<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
description: &'life1 ApplicationDescription,
txn_tracker: &'life2 TransactionTracker,
) -> Pin<Box<dyn Future<Output = Result<UserServiceCode, ExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get_user_service<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
description: &'life1 ApplicationDescription,
txn_tracker: &'life2 TransactionTracker,
) -> Pin<Box<dyn Future<Output = Result<UserServiceCode, ExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Loads the service for the given application, instantiating it if necessary.
Source§fn get_blob<'life0, 'async_trait>(
&'life0 self,
blob_id: BlobId,
) -> Pin<Box<dyn Future<Output = Result<Option<StdArc<Blob>>, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_blob<'life0, 'async_trait>(
&'life0 self,
blob_id: BlobId,
) -> Pin<Box<dyn Future<Output = Result<Option<StdArc<Blob>>, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns the blob with the given ID, if it is available.
Source§fn get_event<'life0, 'async_trait>(
&'life0 self,
event_id: EventId,
) -> Pin<Box<dyn Future<Output = Result<Option<StdArc<Vec<u8>>>, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_event<'life0, 'async_trait>(
&'life0 self,
event_id: EventId,
) -> Pin<Box<dyn Future<Output = Result<Option<StdArc<Vec<u8>>>, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns the event with the given ID, if it is available.
Source§fn get_network_description<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<NetworkDescription>, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_network_description<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<NetworkDescription>, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns the network description, if it is available.
Source§fn get_or_load_committee<'life0, 'async_trait>(
&'life0 self,
epoch: Epoch,
) -> Pin<Box<dyn Future<Output = Result<Option<StdArc<Committee>>, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_or_load_committee<'life0, 'async_trait>(
&'life0 self,
epoch: Epoch,
) -> Pin<Box<dyn Future<Output = Result<Option<StdArc<Committee>>, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns the committee for
epoch, consulting the shared cache first. On a miss,
loads the NewCommittee event and the committee blob from storage and memoizes
the result. Returns Ok(None) if the network description, the event, or the
blob is not available locally. Read moreSource§fn contains_blob<'life0, 'async_trait>(
&'life0 self,
blob_id: BlobId,
) -> Pin<Box<dyn Future<Output = Result<bool, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn contains_blob<'life0, 'async_trait>(
&'life0 self,
blob_id: BlobId,
) -> Pin<Box<dyn Future<Output = Result<bool, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns whether a blob with the given ID is available.
Source§fn contains_event<'life0, 'async_trait>(
&'life0 self,
event_id: EventId,
) -> Pin<Box<dyn Future<Output = Result<bool, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn contains_event<'life0, 'async_trait>(
&'life0 self,
event_id: EventId,
) -> Pin<Box<dyn Future<Output = Result<bool, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns whether an event with the given ID is available.
Source§fn get_committees<'life0, 'async_trait>(
&'life0 self,
epoch_range: RangeInclusive<Epoch>,
) -> Pin<Box<dyn Future<Output = Result<BTreeMap<Epoch, Committee>, ExecutionError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
fn get_committees<'life0, 'async_trait>(
&'life0 self,
epoch_range: RangeInclusive<Epoch>,
) -> Pin<Box<dyn Future<Output = Result<BTreeMap<Epoch, Committee>, ExecutionError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: Sync + 'async_trait,
Returns the committees for the epochs in the given range. Delegates per-epoch
look-ups to
Self::get_or_load_committee so the process-global cache is hit,
and surfaces any missing epochs as a single ExecutionError::EventsNotFound.Auto Trait Implementations§
impl<S> Freeze for ChainRuntimeContext<S>where
S: Freeze,
impl<S> RefUnwindSafe for ChainRuntimeContext<S>where
S: RefUnwindSafe,
impl<S> Send for ChainRuntimeContext<S>where
S: Send,
impl<S> Sync for ChainRuntimeContext<S>where
S: Sync,
impl<S> Unpin for ChainRuntimeContext<S>where
S: Unpin,
impl<S> UnsafeUnpin for ChainRuntimeContext<S>where
S: UnsafeUnpin,
impl<S> UnwindSafe for ChainRuntimeContext<S>where
S: UnwindSafe,
Blanket Implementations§
impl<_INNER> AutoTraits for _INNER
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> MaybeSend for Twhere
T: Send,
impl<T> MaybeSync for Twhere
T: Sync,
impl<T> Post for Twhere
T: Send + 'static,
Source§impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
Source§fn read<'instance>(
&self,
instance: &'instance &mut I,
location: GuestPointer,
length: u32,
) -> Result<Cow<'instance, [u8]>, RuntimeError>
fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>
Reads length bytes from memory from the provided location.
Source§fn write(
&mut self,
instance: &mut &mut I,
location: GuestPointer,
bytes: &[u8],
) -> Result<(), RuntimeError>
fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>
Writes the bytes to memory at the provided location.