referrerpolicy=no-referrer-when-downgrade
sp_api

Trait ApiExt

Source
pub trait ApiExt<Block: BlockT> {
    // Required methods
    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_hash: Block::Hash,
    ) -> Result<bool, ApiError>
       where Self: Sized;
    fn has_api_with<A: RuntimeApiInfo + ?Sized, P: Fn(u32) -> bool>(
        &self,
        at_hash: Block::Hash,
        pred: P,
    ) -> Result<bool, ApiError>
       where Self: Sized;
    fn api_version<A: RuntimeApiInfo + ?Sized>(
        &self,
        at_hash: Block::Hash,
    ) -> Result<Option<u32>, ApiError>
       where Self: Sized;
    fn record_proof(&mut self);
    fn extract_proof(&mut self) -> Option<StorageProof>;
    fn proof_recorder(&self) -> Option<ProofRecorder<Block>>;
    fn into_storage_changes<B: StateBackend<HashingFor<Block>>>(
        &self,
        backend: &B,
        parent_hash: Block::Hash,
    ) -> Result<StorageChanges<Block>, String>
       where Self: Sized;
    fn set_call_context(&mut self, call_context: CallContext);
    fn register_extension<E: Extension>(&mut self, extension: E);
}
Expand description

Extends the runtime api implementation with some common functionality.

Required Methods§

Source

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.

Source

fn has_api<A: RuntimeApiInfo + ?Sized>( &self, at_hash: Block::Hash, ) -> Result<bool, ApiError>
where Self: Sized,

Checks if the given api is implemented and versions match.

Source

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

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

Source

fn api_version<A: RuntimeApiInfo + ?Sized>( &self, at_hash: Block::Hash, ) -> Result<Option<u32>, ApiError>
where Self: Sized,

Returns the version of the given api.

Source

fn record_proof(&mut self)

Start recording all accessed trie nodes for generating proofs.

Source

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.

Source

fn proof_recorder(&self) -> Option<ProofRecorder<Block>>

Returns the current active proof recorder.

Source

fn into_storage_changes<B: StateBackend<HashingFor<Block>>>( &self, backend: &B, parent_hash: Block::Hash, ) -> Result<StorageChanges<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.

Source

fn set_call_context(&mut self, call_context: CallContext)

Set the CallContext to be used by the runtime api calls done by this instance.

Source

fn register_extension<E: Extension>(&mut self, extension: E)

Register an [Extension] that will be accessible while executing a runtime api call.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>

impl<Block: BlockT, C: CallApiAt<Block>> ApiExt<Block> for RuntimeApiImpl<Block, C>