Add get_confirmed_block()/get_confirmed_blocks()

This commit is contained in:
Michael Vines 2019-12-18 22:31:38 -07:00
parent fcda972cec
commit 05664d150b
3 changed files with 52 additions and 3 deletions

View File

@ -5,8 +5,8 @@ use crate::{
mock_rpc_client_request::MockRpcClientRequest,
rpc_client_request::RpcClientRequest,
rpc_request::{
RpcContactInfo, RpcEpochInfo, RpcLeaderSchedule, RpcRequest, RpcVersionInfo,
RpcVoteAccountStatus,
RpcConfirmedBlock, RpcContactInfo, RpcEpochInfo, RpcLeaderSchedule, RpcRequest,
RpcVersionInfo, RpcVoteAccountStatus,
},
};
use bincode::serialize;
@ -194,6 +194,52 @@ impl RpcClient {
})
}
pub fn get_confirmed_block(&self, slot: Slot) -> io::Result<RpcConfirmedBlock> {
let response = self
.client
.send(&RpcRequest::GetConfirmedBlock, json!([slot]), 0)
.map_err(|err| {
io::Error::new(
io::ErrorKind::Other,
format!("GetConfirmedBlock request failure: {:?}", err),
)
})?;
serde_json::from_value(response).map_err(|err| {
io::Error::new(
io::ErrorKind::Other,
format!("GetConfirmedBlock parse failure: {}", err),
)
})
}
pub fn get_confirmed_blocks(
&self,
start_slot: Slot,
end_slot: Option<Slot>,
) -> io::Result<Vec<Slot>> {
let response = self
.client
.send(
&RpcRequest::GetConfirmedBlocks,
json!([start_slot, end_slot]),
0,
)
.map_err(|err| {
io::Error::new(
io::ErrorKind::Other,
format!("GetConfirmedBlocks request failure: {:?}", err),
)
})?;
serde_json::from_value(response).map_err(|err| {
io::Error::new(
io::ErrorKind::Other,
format!("GetConfirmedBlocks parse failure: {}", err),
)
})
}
pub fn get_block_time(&self, slot: Slot) -> io::Result<UnixTimestamp> {
let response = self
.client

View File

@ -35,7 +35,6 @@ impl GenericRpcClientRequest for RpcClientRequest {
fn send(
&self,
request: &RpcRequest,
//params: Option<serde_json::Value>,
params: serde_json::Value,
mut retries: usize,
) -> Result<serde_json::Value, ClientError> {

View File

@ -122,6 +122,8 @@ pub enum RpcRequest {
GetBalance,
GetBlockTime,
GetClusterNodes,
GetConfirmedBlock,
GetConfirmedBlocks,
GetEpochInfo,
GetEpochSchedule,
GetGenesisHash,
@ -158,6 +160,8 @@ impl RpcRequest {
RpcRequest::GetBalance => "getBalance",
RpcRequest::GetBlockTime => "getBlockTime",
RpcRequest::GetClusterNodes => "getClusterNodes",
RpcRequest::GetConfirmedBlock => "getConfirmedBlock",
RpcRequest::GetConfirmedBlocks => "getConfirmedBlocks",
RpcRequest::GetEpochInfo => "getEpochInfo",
RpcRequest::GetEpochSchedule => "getEpochSchedule",
RpcRequest::GetGenesisHash => "getGenesisHash",