Add more documentation about BlockSourceError

Some BlockSource implementations provide more error details. Document
this in case users want to examine it further.
This commit is contained in:
Jeffrey Czyz 2023-03-03 10:09:58 -06:00
parent fbe9f47e12
commit 8408b8d0e4
No known key found for this signature in database
GPG key ID: 3A4E08275D5E96D2
2 changed files with 9 additions and 0 deletions

View file

@ -132,6 +132,9 @@ impl BlockSourceError {
}
/// Converts the error into the underlying error.
///
/// May contain an [`std::io::Error`] from the [`BlockSource`]. See implementations for further
/// details, if any.
pub fn into_inner(self) -> Box<dyn std::error::Error + Send + Sync> {
self.error
}

View file

@ -35,6 +35,9 @@ impl fmt::Display for RpcError {
impl Error for RpcError {}
/// A simple RPC client for calling methods using HTTP `POST`.
///
/// Implements [`BlockSource`] and may return an `Err` containing [`RpcError`]. See
/// [`RpcClient::call_method`] for details.
pub struct RpcClient {
basic_auth: String,
endpoint: HttpEndpoint,
@ -57,6 +60,9 @@ impl RpcClient {
}
/// Calls a method with the response encoded in JSON format and interpreted as type `T`.
///
/// When an `Err` is returned, [`std::io::Error::into_inner`] may contain an [`RpcError`] if
/// [`std::io::Error::kind`] is [`std::io::ErrorKind::Other`].
pub async fn call_method<T>(&self, method: &str, params: &[serde_json::Value]) -> std::io::Result<T>
where JsonResponse: TryFrom<Vec<u8>, Error = std::io::Error> + TryInto<T, Error = std::io::Error> {
let host = format!("{}:{}", self.endpoint.host(), self.endpoint.port());