Expand description
Smoldot light client library.
This library provides an easy way to create a light client.
This light client is opinionated towards certain aspects: what it downloads, how much memory and CPU it is willing to consume, etc.
§Usage
§Initialization
In order to use the light client, call Client::new, passing an implementation of the
platform::PlatformRef trait. See the documentation of the platform::PlatformRef trait
for more information.
The Client contains two generic parameters:
- An implementation of the
platform::PlatformReftrait. - An opaque user data. If you do not use this, you can simply use
().
When the std feature of this library is enabled, the platform::DefaultPlatform struct
can be used as an implementation of platform::PlatformRef.
For example:
use smoldot_light::{Client, platform::DefaultPlatform};
let client = Client::new(DefaultPlatform::new(env!("CARGO_PKG_NAME").into(), env!("CARGO_PKG_VERSION").into()));If the std feature of this library is disabled, then you need to implement the
platform::PlatformRef trait manually.
§Adding a chain
After the client has been initialized, use Client::add_chain to ask the client to connect
to said chain. See the documentation of AddChainConfig for information about what to
provide.
Client::add_chain returns a ChainId, which identifies the chain within the Client.
A Client can be thought of as a collection of chain connections, each identified by their
ChainId, akin to a HashMap<ChainId, ...>.
A chain can be removed at any time using Client::remove_chain. This will cause the client
to stop all connections and clean up its internal services. The ChainId is instantly
considered as invalid as soon as the method is called.
§JSON-RPC requests and responses
Once a chain has been added, one can send JSON-RPC requests using Client::json_rpc_request.
The request parameter of this function must be a JSON-RPC request in its text form. For
example: {"id":53,"jsonrpc":"2.0","method":"system_name","params":[]}.
Calling Client::json_rpc_request queues the request in the internals of the client. Later,
the client will process it.
Responses can be pulled by calling the AddChainSuccess::json_rpc_responses that is returned
after a chain has been added.
Modules§
- network_
service - Background network service.
- platform
Macros§
- log
- Helper macro for using the
crate::platform::PlatformRef::logfunction. - log_
inner
Structs§
- AddChain
Config - See
Client::add_chain. - AddChain
Success - Returns by
Client::add_chainon success. - ChainId
- Chain registered in a
Client. - Client
- Holds a list of chains, connections, and JSON-RPC services.
- Json
RpcResponses - Stream of JSON-RPC responses or notifications.
Enums§
- AddChain
Config Json Rpc - See
AddChainConfig::json_rpc. - AddChain
Error - Error potentially returned by
Client::add_chain. - Handle
RpcError - Error potentially returned when queuing a JSON-RPC request.