Struct smoldot_light::Client
source · 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, AddChainError>
pub fn add_chain( &mut self, config: AddChainConfig<'_, TChain, impl Iterator<Item = ChainId>> ) -> Result<AddChainSuccess, 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_value() 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.
Also returns an error if the request could not be parsed as a valid JSON-RPC request, as in that situation smoldot is unable to send back a corresponding JSON-RPC error message.
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 = ()> !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>where TChain: Unpin, TPlat: Unpin,
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, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
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, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
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.