pub struct ExecutionStateView<C> {
pub system: SystemExecutionStateView<C>,
pub users: HashedReentrantCollectionView<C, ApplicationId, KeyValueStoreView<C>>,
pub stream_event_counts: MapView<C, StreamId, u32>,
}
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.
Implementations§
Source§impl<C> ExecutionStateView<C>
impl<C> ExecutionStateView<C>
pub async fn execute_operation( &mut self, context: OperationContext, operation: Operation, txn_tracker: &mut TransactionTracker, resource_controller: &mut ResourceController<Option<AccountOwner>>, ) -> Result<(), ExecutionError>
pub async fn execute_message( &mut self, context: MessageContext, message: Message, grant: Option<&mut Amount>, txn_tracker: &mut TransactionTracker, resource_controller: &mut ResourceController<Option<AccountOwner>>, ) -> Result<(), ExecutionError>
pub async fn bounce_message( &self, context: MessageContext, grant: Amount, message: Message, txn_tracker: &mut TransactionTracker, ) -> Result<(), ExecutionError>
pub async fn send_refund( &self, context: MessageContext, amount: Amount, txn_tracker: &mut TransactionTracker, ) -> Result<(), ExecutionError>
pub async fn query_application( &mut self, context: QueryContext, query: Query, endpoint: Option<&mut ServiceRuntimeEndpoint>, ) -> Result<QueryOutcome, ExecutionError>
pub async fn list_applications( &self, ) -> Result<Vec<(ApplicationId, ApplicationDescription)>, ExecutionError>
Trait Implementations§
Source§impl<C> ClonableView<C> for ExecutionStateView<C>
impl<C> ClonableView<C> for ExecutionStateView<C>
Source§fn clone_unchecked(&mut self) -> Result<Self, ViewError>
fn clone_unchecked(&mut self) -> Result<Self, ViewError>
Creates a clone of this view, sharing the underlying storage context but prone to
data races which can corrupt the view state.
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>>
Resolves a field value and outputs it as a json 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>>
Find the GraphQL entity with the given name from the parameter. Read more
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>
Collect all the fields of the container that are queried in the
selection set. Read more
Source§impl<C> CryptoHashView<C> for ExecutionStateView<C>
impl<C> CryptoHashView<C> for ExecutionStateView<C>
Source§fn crypto_hash<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<CryptoHash, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn crypto_hash<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<CryptoHash, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Computing the hash and attributing the type to it.
Source§fn crypto_hash_mut<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<CryptoHash, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn crypto_hash_mut<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<CryptoHash, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Computing the hash and attributing the type to it.
Source§impl<C: Debug> Debug for ExecutionStateView<C>
impl<C: Debug> Debug for ExecutionStateView<C>
Source§impl<C> HashableView<C> for ExecutionStateView<C>
impl<C> HashableView<C> for ExecutionStateView<C>
Source§type Hasher = CoreWrapper<Sha3_256Core>
type Hasher = CoreWrapper<Sha3_256Core>
How to compute hashes.
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
Create type information in the registry and return qualified typename.
Source§async fn resolve(
&self,
ctx: &ContextSelectionSet<'_>,
_field: &Positioned<Field>,
) -> ServerResult<Value>
async fn resolve( &self, ctx: &ContextSelectionSet<'_>, _field: &Positioned<Field>, ) -> ServerResult<Value>
Resolve an output value to
async_graphql::Value
.Source§fn qualified_type_name() -> String
fn qualified_type_name() -> String
Qualified typename.
Source§impl<C> View<C> for ExecutionStateView<C>
impl<C> View<C> for ExecutionStateView<C>
Source§const NUM_INIT_KEYS: usize = 21usize
const NUM_INIT_KEYS: usize = 21usize
The number of keys used for the initialization
Source§fn pre_load(context: &C) -> Result<Vec<Vec<u8>>, ViewError>
fn pre_load(context: &C) -> Result<Vec<Vec<u8>>, ViewError>
Creates the keys needed for loading the view
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>
Loads a view from the values
Source§fn load<'async_trait>(
context: C,
) -> Pin<Box<dyn Future<Output = Result<Self, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
fn load<'async_trait>(
context: C,
) -> Pin<Box<dyn Future<Output = Result<Self, ViewError>> + Send + 'async_trait>>where
Self: 'async_trait,
Loads a view
Source§fn rollback(&mut self)
fn rollback(&mut self)
Discards all pending changes. After that
flush
should have no effect to storage.Source§fn has_pending_changes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn has_pending_changes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns
true
if flushing this view would result in changes to the persistent storage.Source§fn flush(&mut self, batch: &mut Batch) -> Result<bool, ViewError>
fn flush(&mut self, batch: &mut Batch) -> Result<bool, ViewError>
Persists changes to storage. This leaves the view still usable and is essentially neutral to the
program running. Crash-resistant storage implementations are expected to accumulate the desired
changes in the
batch
variable first. If the view is dropped without calling flush
, staged
changes are simply lost.
The returned boolean indicates whether the operation removes the view or not.impl<C: Send + Sync + Context> ObjectType for ExecutionStateView<C>
Auto Trait Implementations§
impl<C> !Freeze for ExecutionStateView<C>
impl<C> !RefUnwindSafe 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> !UnwindSafe for ExecutionStateView<C>
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
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
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 moreSource§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
.