pub struct Client<TPlat: PlatformRef, TChain = ()> { /* private fields */ }Expand description
Holds a list of chains, connections, and JSON-RPC services.
Implementations§
Source§impl<TPlat: PlatformRef, TChain> Client<TPlat, TChain>
impl<TPlat: PlatformRef, TChain> Client<TPlat, TChain>
Sourcepub fn add_chain(
&mut self,
config: AddChainConfig<'_, TChain, impl Iterator<Item = ChainId>>,
) -> Result<AddChainSuccess<TPlat>, AddChainError>
pub fn add_chain( &mut self, config: AddChainConfig<'_, TChain, impl Iterator<Item = ChainId>>, ) -> Result<AddChainSuccess<TPlat>, AddChainError>
Adds a new chain to the list of chains smoldot tries to synchronize.
Returns an error in case something is wrong with the configuration.
Sourcepub fn remove_chain(&mut self, id: ChainId) -> TChain
pub fn remove_chain(&mut self, id: ChainId) -> TChain
Removes the chain from smoldot. This instantaneously and silently cancels all on-going JSON-RPC requests and subscriptions.
The provided ChainId is now considered dead. Be aware that this same ChainId might
later be reused if Client::add_chain is called again.
While from the API perspective it will look like the chain no longer exists, calling this function will not actually immediately disconnect from the given chain if it is still used as the relay chain of a parachain.
If the JsonRpcResponses object that was returned when adding the chain is still alive,
JsonRpcResponses::next will now return None.
Sourcepub fn json_rpc_request(
&mut self,
json_rpc_request: impl Into<String>,
chain_id: ChainId,
) -> Result<(), HandleRpcError>
pub fn json_rpc_request( &mut self, json_rpc_request: impl Into<String>, chain_id: ChainId, ) -> Result<(), HandleRpcError>
Enqueues a JSON-RPC request towards the given chain.
Since most JSON-RPC requests can only be answered asynchronously, the request is only queued and will be decoded and processed later.
Returns an error if the number of requests that have been sent but whose answer hasn’t been
pulled with JsonRpcResponses::next is superior or equal to the value that was passed
through AddChainConfigJsonRpc::Enabled::max_pending_requests. In that situation, the
API user is encouraged to stop sending requests and start pulling answers with
JsonRpcResponses::next.
Passing u32::MAX to AddChainConfigJsonRpc::Enabled::max_pending_requests is
a good way to avoid errors here, but this should only be done if the JSON-RPC client is
trusted.
If the JSON-RPC request is not a valid JSON-RPC request, a JSON-RPC error response with
an id equal to null is later generated, in accordance with the JSON-RPC specification.
§Panic
Panics if the ChainId is invalid, or if AddChainConfig::json_rpc was
AddChainConfigJsonRpc::Disabled when adding the chain.
Trait Implementations§
Auto Trait Implementations§
impl<TPlat, TChain> Freeze for Client<TPlat, TChain>where
TPlat: Freeze,
impl<TPlat, TChain = ()> !RefUnwindSafe for Client<TPlat, TChain>
impl<TPlat, TChain> Send for Client<TPlat, TChain>where
TChain: Send,
impl<TPlat, TChain> Sync for Client<TPlat, TChain>where
TChain: Sync,
impl<TPlat, TChain> Unpin for Client<TPlat, TChain>
impl<TPlat, TChain = ()> !UnwindSafe for Client<TPlat, TChain>
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more