feat: add ping,get_latest_blockhash,get_block_height,get_slot for yellowstone-grpc-client
This commit is contained in:
parent
58120e7c7a
commit
02a94d926a
|
@ -9,10 +9,17 @@ use {
|
|||
yellowstone_grpc_proto::prelude::{
|
||||
subscribe_request_filter_accounts_filter::Filter as AccountsFilterDataOneof,
|
||||
subscribe_request_filter_accounts_filter_memcmp::Data as AccountsFilterMemcmpOneof,
|
||||
subscribe_update::UpdateOneof, SubscribeRequest, SubscribeRequestFilterAccounts,
|
||||
SubscribeRequestFilterAccountsFilter, SubscribeRequestFilterAccountsFilterMemcmp,
|
||||
SubscribeRequestFilterBlocks, SubscribeRequestFilterBlocksMeta,
|
||||
SubscribeRequestFilterSlots, SubscribeRequestFilterTransactions, SubscribeUpdateAccount,
|
||||
subscribe_update::UpdateOneof,
|
||||
SubscribeRequest,
|
||||
SubscribeRequestFilterAccounts,
|
||||
SubscribeRequestFilterAccountsFilter,
|
||||
SubscribeRequestFilterAccountsFilterMemcmp,
|
||||
SubscribeRequestFilterBlocks,
|
||||
SubscribeRequestFilterBlocksMeta,
|
||||
SubscribeRequestFilterSlots,
|
||||
SubscribeRequestFilterTransactions,
|
||||
SubscribeUpdateAccount,
|
||||
// PingRequest,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -288,3 +295,17 @@ async fn main() -> anyhow::Result<()> {
|
|||
.await
|
||||
.map_err(Into::into)
|
||||
}
|
||||
|
||||
// unary method
|
||||
// #[tokio::main]
|
||||
// async fn main() -> anyhow::Result<()> {
|
||||
// std::env::set_var("RUST_LOG", "info");
|
||||
// env_logger::init();
|
||||
//
|
||||
// let args = Args::parse();
|
||||
// let (endpoint, x_token) = (args.endpoint.clone(), args.x_token.clone());
|
||||
// let mut client = GeyserGrpcClient::connect(endpoint, x_token, None)?;
|
||||
// let response = client.ping(200).await;
|
||||
// dbg!(&response);
|
||||
// Ok(())
|
||||
// }
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use yellowstone_grpc_proto::geyser::{GetSlotResponse, PongResponse};
|
||||
use yellowstone_grpc_proto::prelude::{GetBlockHeightResponse, GetLatestBlockhashResponse};
|
||||
use {
|
||||
bytes::Bytes,
|
||||
futures::{
|
||||
|
@ -15,7 +17,8 @@ use {
|
|||
Request, Response, Status,
|
||||
},
|
||||
yellowstone_grpc_proto::prelude::{
|
||||
geyser_client::GeyserClient, SubscribeRequest, SubscribeRequestFilterAccounts,
|
||||
geyser_client::GeyserClient, GetBlockHeightRequest, GetLatestBlockhashRequest,
|
||||
GetSlotRequest, PingRequest, SubscribeRequest, SubscribeRequestFilterAccounts,
|
||||
SubscribeRequestFilterBlocks, SubscribeRequestFilterBlocksMeta,
|
||||
SubscribeRequestFilterSlots, SubscribeRequestFilterTransactions, SubscribeUpdate,
|
||||
},
|
||||
|
@ -117,6 +120,33 @@ impl<F: Interceptor> GeyserGrpcClient<F> {
|
|||
.await?;
|
||||
Ok(response)
|
||||
}
|
||||
|
||||
pub async fn ping(&mut self, count: i32) -> GeyserGrpcClientResult<PongResponse> {
|
||||
let message = PingRequest { count };
|
||||
let request = tonic::Request::new(message);
|
||||
let response = self.client.ping(request).await?;
|
||||
Ok(response.into_inner())
|
||||
}
|
||||
|
||||
pub async fn get_latest_blockhash(
|
||||
&mut self,
|
||||
) -> GeyserGrpcClientResult<GetLatestBlockhashResponse> {
|
||||
let request = tonic::Request::new(GetLatestBlockhashRequest {});
|
||||
let response = self.client.get_latest_blockhash(request).await?;
|
||||
Ok(response.into_inner())
|
||||
}
|
||||
|
||||
pub async fn get_block_height(&mut self) -> GeyserGrpcClientResult<GetBlockHeightResponse> {
|
||||
let request = tonic::Request::new(GetBlockHeightRequest {});
|
||||
let response = self.client.get_block_height(request).await?;
|
||||
Ok(response.into_inner())
|
||||
}
|
||||
|
||||
pub async fn get_slot(&mut self) -> GeyserGrpcClientResult<GetSlotResponse> {
|
||||
let request = tonic::Request::new(GetSlotRequest {});
|
||||
let response = self.client.get_slot(request).await?;
|
||||
Ok(response.into_inner())
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
Loading…
Reference in New Issue