mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 19:21:13 +00:00
a0cb14aa4f
* start migrating, broken * first iteration of updating * fmt and clippy * add Composite<u32> decoding via scale value patch * bump scale type gen versions * fix decoding with new scale decode * compiling with changed deps * core utils, condig, client, metadata * core crate compiling * signer crate no once lock * add core to no-std-tests, change imports * broken commit, start pulling everything together in subxt * port more things to subxt * events in core crate, extrinsics sadly much more difficult * almost all examples pass again * dynamic values fix in examples * fix no std issue and fmt * remove unused dependencies * fix lightclient impl * runtime version refactor * formatting and addressing nits * more comments addressed * update wasm example and no-std-signer tests * other nits and error impl on signer errors * fix feature flag * fix runtime version refactor * fix doc links * fix integration tests * fix feature flag gated client state * fix native feature in CI * fix lightclient utils * make imports more lean in subxt-core * integrate changes from subxt-core imports into subxt * other changes in subxt simplify imports more * fix and docs * doc false for cli * fix clippy * remove events block hash in tests * codegen no-std support in generated code * export alloc crate for no-std codegen * fix doc test * implement James comments * remove std traits, use core traits instead * address nits * remove unusued dep in no-std tests * fix Box import in no_std * sp-crypto-hashing instead of sp-core-hashing * bump scale-typegen, add no std codegen tests * fix some things * replace unmaintained derivative with derive_where to remove non-canonical warnings * fmt * remove unused dep * fix deps * update artifacts to fix type ID mismatches * bump to latest scale-typegen --------- Co-authored-by: James Wilson <james@jsdw.me>
53 lines
1.6 KiB
Rust
53 lines
1.6 KiB
Rust
// Copyright 2019-2023 Parity Technologies (UK) Ltd.
|
|
// This file is dual-licensed as Apache-2.0 or GPL-3.0.
|
|
// see LICENSE for license details.
|
|
|
|
use super::runtime_types::RuntimeApi;
|
|
|
|
use crate::{backend::BlockRef, client::OnlineClientT, error::Error, Config};
|
|
use derive_where::derive_where;
|
|
use std::{future::Future, marker::PhantomData};
|
|
|
|
/// Execute runtime API calls.
|
|
#[derive_where(Clone; Client)]
|
|
pub struct RuntimeApiClient<T, Client> {
|
|
client: Client,
|
|
_marker: PhantomData<T>,
|
|
}
|
|
|
|
impl<T, Client> RuntimeApiClient<T, Client> {
|
|
/// Create a new [`RuntimeApiClient`]
|
|
pub fn new(client: Client) -> Self {
|
|
Self {
|
|
client,
|
|
_marker: PhantomData,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<T, Client> RuntimeApiClient<T, Client>
|
|
where
|
|
T: Config,
|
|
Client: OnlineClientT<T>,
|
|
{
|
|
/// Obtain a runtime API interface at some block hash.
|
|
pub fn at(&self, block_ref: impl Into<BlockRef<T::Hash>>) -> RuntimeApi<T, Client> {
|
|
RuntimeApi::new(self.client.clone(), block_ref.into())
|
|
}
|
|
|
|
/// Obtain a runtime API interface at the latest block hash.
|
|
pub fn at_latest(
|
|
&self,
|
|
) -> impl Future<Output = Result<RuntimeApi<T, Client>, Error>> + Send + 'static {
|
|
// Clone and pass the client in like this so that we can explicitly
|
|
// return a Future that's Send + 'static, rather than tied to &self.
|
|
let client = self.client.clone();
|
|
async move {
|
|
// get the ref for the latest finalized block and use that.
|
|
let block_ref = client.backend().latest_finalized_block_ref().await?;
|
|
|
|
Ok(RuntimeApi::new(client, block_ref))
|
|
}
|
|
}
|
|
}
|