rpc: Expose chainHead_unpin method for blocks

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
This commit is contained in:
Alexandru Vasile
2022-12-12 12:09:37 +00:00
parent e77e30dbd3
commit 8142851926
3 changed files with 34 additions and 13 deletions
+2 -13
View File
@@ -64,20 +64,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
.call("AccountNonceApi_account_nonce".into(), Some(&call_params))
.await?;
println!("[hash={:?}] call={:?}", block.hash(), call);
}
// Subscribe to the `chainHead_follow` method.
let mut follow_sub = api.rpc().subscribe_chainhead_follow(false).await?;
// Handle all subscriptions from the `chainHead_follow`.
while let Some(event) = follow_sub.next().await {
let event = event?;
println!(
"sub_id: {:?} event: {:?}",
follow_sub.subscription_id(),
event
);
// Unpin the block as last step.
block.unpin().await?;
}
Ok(())
+16
View File
@@ -162,6 +162,22 @@ where
"Failed to execute the runtime API call".into(),
))
}
/// Unpin this block.
///
/// # Note
///
/// Call this method when you are no longer interested in making queries
/// against this block.
///
/// Failing to call this method will eventually terminate the subscription.
pub async fn unpin(self) -> Result<(), Error> {
self.client
.rpc()
.chainhead_unpin(self.subscription_id, self.hash)
.await?;
Ok(())
}
}
/// A representation of a block.
+16
View File
@@ -698,6 +698,22 @@ impl<T: Config> Rpc<T> {
Ok(header)
}
/// Unpin a block reported by the `chainHead_follow` subscription.
pub async fn chainhead_unpin(
&self,
subscription_id: String,
hash: T::Hash,
) -> Result<(), Error> {
self.client
.request(
"chainHead_unstable_unpin",
rpc_params![subscription_id, hash],
)
.await?;
Ok(())
}
/// Parse `chaiHead_header` response and return the block's header.
///
/// # Note