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<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