[][src]Trait sp_api::ApiExt

pub trait ApiExt<Block: BlockT>: ApiErrorExt {
    type StateBackend: StateBackend<HashFor<Block>>;
    fn execute_in_transaction<F: FnOnce(&Self) -> TransactionOutcome<R>, R>(
        &self,
        call: F
    ) -> R
    where
        Self: Sized
;
fn has_api<A: RuntimeApiInfo + ?Sized>(
        &self,
        at: &BlockId<Block>
    ) -> Result<bool, Self::Error>
    where
        Self: Sized
;
fn has_api_with<A: RuntimeApiInfo + ?Sized, P: Fn(u32) -> bool>(
        &self,
        at: &BlockId<Block>,
        pred: P
    ) -> Result<bool, Self::Error>
    where
        Self: Sized
;
fn record_proof(&mut self);
fn extract_proof(&mut self) -> Option<StorageProof>;
fn into_storage_changes(
        &self,
        backend: &Self::StateBackend,
        changes_trie_state: Option<&ChangesTrieState<'_, HashFor<Block>, NumberFor<Block>>>,
        parent_hash: Block::Hash
    ) -> Result<StorageChanges<Self::StateBackend, Block>, String>
    where
        Self: Sized
; }

Extends the runtime api implementation with some common functionality.

Associated Types

type StateBackend: StateBackend<HashFor<Block>>

The state backend that is used to store the block states.

Loading content...

Required methods

fn execute_in_transaction<F: FnOnce(&Self) -> TransactionOutcome<R>, R>(
    &self,
    call: F
) -> R where
    Self: Sized

Execute the given closure inside a new transaction.

Depending on the outcome of the closure, the transaction is committed or rolled-back.

The internal result of the closure is returned afterwards.

fn has_api<A: RuntimeApiInfo + ?Sized>(
    &self,
    at: &BlockId<Block>
) -> Result<bool, Self::Error> where
    Self: Sized

Checks if the given api is implemented and versions match.

fn has_api_with<A: RuntimeApiInfo + ?Sized, P: Fn(u32) -> bool>(
    &self,
    at: &BlockId<Block>,
    pred: P
) -> Result<bool, Self::Error> where
    Self: Sized

Check if the given api is implemented and the version passes a predicate.

fn record_proof(&mut self)

Start recording all accessed trie nodes for generating proofs.

fn extract_proof(&mut self) -> Option<StorageProof>

Extract the recorded proof.

This stops the proof recording.

If record_proof was not called before, this will return None.

fn into_storage_changes(
    &self,
    backend: &Self::StateBackend,
    changes_trie_state: Option<&ChangesTrieState<'_, HashFor<Block>, NumberFor<Block>>>,
    parent_hash: Block::Hash
) -> Result<StorageChanges<Self::StateBackend, Block>, String> where
    Self: Sized

Convert the api object into the storage changes that were done while executing runtime api functions.

After executing this function, all collected changes are reset.

Loading content...

Implementors

Loading content...