pub struct ExecutionStateView<C> {
pub system: SystemExecutionStateView<C>,
pub users: HashedReentrantCollectionView<C, ApplicationId, KeyValueStoreView<C>>,
pub stream_event_counts: MapView<C, StreamId, u32>,
pub historical_hash: RegisterView<C, Option<HasherOutput>>,
}Expand description
A view accessing the execution state of a chain.
Fields§
§system: SystemExecutionStateView<C>System application.
users: HashedReentrantCollectionView<C, ApplicationId, KeyValueStoreView<C>>User applications.
stream_event_counts: MapView<C, StreamId, u32>The number of events in the streams that this chain is writing to.
historical_hash: RegisterView<C, Option<HasherOutput>>Rolling historical hash of the execution state, used when FLAG_HISTORICAL_HASH
(or its shadow variant) is active. None until the first block after activation, which
seeds it from the full content hash (via HashableView); subsequent blocks extend it
cheaply from the batch that block persists. Appended last so that existing chains load it
as None without moving the storage keys of the other fields, and deliberately excluded
from the hand-written HashableView impl below (so it never hashes itself).
Implementations§
Source§impl<C> ExecutionStateView<C>
impl<C> ExecutionStateView<C>
Sourcepub async fn crypto_hash_mut(&mut self) -> Result<CryptoHash, ViewError>
pub async fn crypto_hash_mut(&mut self) -> Result<CryptoHash, ViewError>
Computes the cryptographic hash of the execution state.
Source§impl<C> ExecutionStateView<C>
impl<C> ExecutionStateView<C>
Sourcepub async fn query_application(
&mut self,
context: QueryContext,
query: Query,
endpoint: Option<&mut ServiceRuntimeEndpoint>,
) -> Result<QueryOutcome, ExecutionError>
pub async fn query_application( &mut self, context: QueryContext, query: Query, endpoint: Option<&mut ServiceRuntimeEndpoint>, ) -> Result<QueryOutcome, ExecutionError>
Runs a query against the given application and returns its response.
Sourcepub async fn list_applications(
&self,
) -> Result<Vec<(ApplicationId, ApplicationDescription)>, ExecutionError>
pub async fn list_applications( &self, ) -> Result<Vec<(ApplicationId, ApplicationDescription)>, ExecutionError>
Returns the descriptions of all applications registered on this chain.
Trait Implementations§
Source§impl<C> Allocative for ExecutionStateView<C>
impl<C> Allocative for ExecutionStateView<C>
Source§impl<C> ClonableView for ExecutionStateView<C>where
SystemExecutionStateView<C>: ClonableView,
HashedReentrantCollectionView<C, ApplicationId, KeyValueStoreView<C>>: ClonableView,
MapView<C, StreamId, u32>: ClonableView,
RegisterView<C, Option<HasherOutput>>: ClonableView,
Self: View,
impl<C> ClonableView for ExecutionStateView<C>where
SystemExecutionStateView<C>: ClonableView,
HashedReentrantCollectionView<C, ApplicationId, KeyValueStoreView<C>>: ClonableView,
MapView<C, StreamId, u32>: ClonableView,
RegisterView<C, Option<HasherOutput>>: ClonableView,
Self: View,
Source§fn clone_unchecked(&mut self) -> Result<Self, ViewError>
fn clone_unchecked(&mut self) -> Result<Self, ViewError>
Source§impl<C: Send + Sync + Context> ContainerType for ExecutionStateView<C>
impl<C: Send + Sync + Context> ContainerType for ExecutionStateView<C>
Source§async fn resolve_field(&self, ctx: &Context<'_>) -> ServerResult<Option<Value>>
async fn resolve_field(&self, ctx: &Context<'_>) -> ServerResult<Option<Value>>
async_graphql::Value. Read moreSource§async fn find_entity(
&self,
ctx: &Context<'_>,
params: &Value,
) -> ServerResult<Option<Value>>
async fn find_entity( &self, ctx: &Context<'_>, params: &Value, ) -> ServerResult<Option<Value>>
Source§fn collect_all_fields<'a>(
&'a self,
ctx: &ContextBase<'a, &'a Positioned<SelectionSet>>,
fields: &mut Fields<'a>,
) -> Result<(), ServerError>
fn collect_all_fields<'a>( &'a self, ctx: &ContextBase<'a, &'a Positioned<SelectionSet>>, fields: &mut Fields<'a>, ) -> Result<(), ServerError>
Source§impl<C: Debug> Debug for ExecutionStateView<C>
impl<C: Debug> Debug for ExecutionStateView<C>
Source§impl<C> HashableView for ExecutionStateView<C>
Hashes only the content fields of ExecutionStateView, mirroring the HashableView
derive but omitting the appended historical_hash register. Keeping this by hand means the
rolling hash never feeds back into the content hash that seeds it.
impl<C> HashableView for ExecutionStateView<C>
Hashes only the content fields of ExecutionStateView, mirroring the HashableView
derive but omitting the appended historical_hash register. Keeping this by hand means the
rolling hash never feeds back into the content hash that seeds it.
impl<C: Send + Sync + Context> ObjectType for ExecutionStateView<C>
Source§impl<C: Send + Sync + Context> OutputType for ExecutionStateView<C>
impl<C: Send + Sync + Context> OutputType for ExecutionStateView<C>
Source§fn create_type_info(registry: &mut Registry) -> String
fn create_type_info(registry: &mut Registry) -> String
Source§async fn resolve(
&self,
ctx: &ContextSelectionSet<'_>,
_field: &Positioned<Field>,
) -> ServerResult<Value>
async fn resolve( &self, ctx: &ContextSelectionSet<'_>, _field: &Positioned<Field>, ) -> ServerResult<Value>
async_graphql::Value.Source§fn qualified_type_name() -> String
fn qualified_type_name() -> String
Source§impl<C: Context, C2: Context> ReplaceContext<C2> for ExecutionStateView<C>
impl<C: Context, C2: Context> ReplaceContext<C2> for ExecutionStateView<C>
Source§impl<C> View for ExecutionStateView<C>where
C: Context,
SystemExecutionStateView<C>: View<Context = C>,
HashedReentrantCollectionView<C, ApplicationId, KeyValueStoreView<C>>: View<Context = C>,
MapView<C, StreamId, u32>: View<Context = C>,
RegisterView<C, Option<HasherOutput>>: View<Context = C>,
impl<C> View for ExecutionStateView<C>where
C: Context,
SystemExecutionStateView<C>: View<Context = C>,
HashedReentrantCollectionView<C, ApplicationId, KeyValueStoreView<C>>: View<Context = C>,
MapView<C, StreamId, u32>: View<Context = C>,
RegisterView<C, Option<HasherOutput>>: View<Context = C>,
Source§const NUM_INIT_KEYS: usize
const NUM_INIT_KEYS: usize
Source§fn pre_load(context: &C) -> Result<Vec<Vec<u8>>, ViewError>
fn pre_load(context: &C) -> Result<Vec<Vec<u8>>, ViewError>
Source§fn post_load(context: C, values: &[Option<Vec<u8>>]) -> Result<Self, ViewError>
fn post_load(context: C, values: &[Option<Vec<u8>>]) -> Result<Self, ViewError>
Source§fn rollback(&mut self)
fn rollback(&mut self)
flush should have no effect to storage.Source§async fn has_pending_changes(&self) -> bool
async fn has_pending_changes(&self) -> bool
true if flushing this view would result in changes to the persistent storage.Source§fn pre_save(&self, batch: &mut Batch) -> Result<bool, ViewError>
fn pre_save(&self, batch: &mut Batch) -> Result<bool, ViewError>
batch variable.
The returned boolean indicates whether the operation removes the view or not.Source§fn post_save(&mut self)
fn post_save(&mut self)
pre_save and after the batch has been successfully written to storage.
This leaves the view in a clean state with no pending changes. Read moreAuto Trait Implementations§
impl<C> !Freeze for ExecutionStateView<C>
impl<C> !RefUnwindSafe for ExecutionStateView<C>
impl<C> !UnwindSafe for ExecutionStateView<C>
impl<C> Send for ExecutionStateView<C>
impl<C> Sync for ExecutionStateView<C>
impl<C> Unpin for ExecutionStateView<C>where
C: Unpin,
impl<C> UnsafeUnpin for ExecutionStateView<C>where
C: UnsafeUnpin,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
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>
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>
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,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
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.