Compare commits
2 Commits
c1ca3e2e67
...
e9eb3ecdc5
Author | SHA1 | Date |
---|---|---|
GroovieGermanikus | e9eb3ecdc5 | |
GroovieGermanikus | 1d2937ad95 |
|
@ -4156,8 +4156,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "yellowstone-grpc-client"
|
name = "yellowstone-grpc-client"
|
||||||
version = "1.14.0+solana.1.17.28"
|
version = "1.14.0"
|
||||||
source = "git+https://github.com/rpcpool/yellowstone-grpc.git?tag=v1.13.0+solana.1.17.28#aafd827df872f093535c425ded4eca423929a3d0"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1f4f6d836d214cb8789002d039412da354049e9ffe983c643ec492c4d934698f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures",
|
"futures",
|
||||||
|
@ -4170,8 +4171,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "yellowstone-grpc-proto"
|
name = "yellowstone-grpc-proto"
|
||||||
version = "1.13.0+solana.1.17.28"
|
version = "1.13.0"
|
||||||
source = "git+https://github.com/rpcpool/yellowstone-grpc.git?tag=v1.13.0+solana.1.17.28#aafd827df872f093535c425ded4eca423929a3d0"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9c00b66d40d85c405f14b420d7674e98c70d06f6b673f36c9e0285f81b9b797d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "geyser-grpc-connector"
|
name = "geyser-grpc-connector"
|
||||||
version = "0.10.1+yellowstone.1.12"
|
version = "0.10.4+yellowstone.1.13"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
description = "Multiplexing and Reconnection on Yellowstone gRPC Geyser client streaming"
|
description = "Multiplexing and Reconnection on Yellowstone gRPC Geyser client streaming"
|
||||||
|
@ -9,9 +9,8 @@ authors = ["GroovieGermanikus <groovie@mango.markets>"]
|
||||||
repository = "https://github.com/blockworks-foundation/geyser-grpc-connector"
|
repository = "https://github.com/blockworks-foundation/geyser-grpc-connector"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
yellowstone-grpc-client = { version = "1.14.0", git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.13.0+solana.1.17.28" }
|
yellowstone-grpc-client = "~1.14.0"
|
||||||
yellowstone-grpc-proto = { version = "1.13.0", git = "https://github.com/rpcpool/yellowstone-grpc.git", tag = "v1.13.0+solana.1.17.28" }
|
yellowstone-grpc-proto = "~1.13.0"
|
||||||
|
|
||||||
|
|
||||||
# required for CommitmentConfig
|
# required for CommitmentConfig
|
||||||
solana-sdk = "1"
|
solana-sdk = "1"
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
use futures::Stream;
|
|
||||||
use log::{info, warn};
|
use log::{info, warn};
|
||||||
use solana_sdk::clock::Slot;
|
use solana_sdk::clock::Slot;
|
||||||
use solana_sdk::commitment_config::CommitmentConfig;
|
use solana_sdk::commitment_config::CommitmentConfig;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::pin::pin;
|
|
||||||
|
|
||||||
use base64::Engine;
|
use base64::Engine;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
|
@ -23,10 +21,10 @@ use tokio::sync::mpsc::Receiver;
|
||||||
use yellowstone_grpc_proto::geyser::SubscribeUpdateBlock;
|
use yellowstone_grpc_proto::geyser::SubscribeUpdateBlock;
|
||||||
|
|
||||||
use geyser_grpc_connector::grpc_subscription_autoreconnect_tasks::{
|
use geyser_grpc_connector::grpc_subscription_autoreconnect_tasks::{
|
||||||
create_geyser_autoconnection_task, create_geyser_autoconnection_task_with_mpsc,
|
create_geyser_autoconnection_task_with_mpsc,
|
||||||
};
|
};
|
||||||
use geyser_grpc_connector::grpcmultiplex_fastestwins::{
|
use geyser_grpc_connector::grpcmultiplex_fastestwins::{
|
||||||
create_multiplexed_stream, FromYellowstoneExtractor,
|
FromYellowstoneExtractor,
|
||||||
};
|
};
|
||||||
use geyser_grpc_connector::{GeyserFilter, GrpcConnectionTimeouts, GrpcSourceConfig, Message};
|
use geyser_grpc_connector::{GeyserFilter, GrpcConnectionTimeouts, GrpcSourceConfig, Message};
|
||||||
use tokio::time::{sleep, Duration};
|
use tokio::time::{sleep, Duration};
|
||||||
|
|
|
@ -14,7 +14,6 @@ use tracing::warn;
|
||||||
use yellowstone_grpc_proto::geyser::subscribe_update::UpdateOneof;
|
use yellowstone_grpc_proto::geyser::subscribe_update::UpdateOneof;
|
||||||
use yellowstone_grpc_proto::geyser::SubscribeUpdate;
|
use yellowstone_grpc_proto::geyser::SubscribeUpdate;
|
||||||
use yellowstone_grpc_proto::prost::Message as _;
|
use yellowstone_grpc_proto::prost::Message as _;
|
||||||
use csv::Writer;
|
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn start_example_blockmini_consumer(
|
fn start_example_blockmini_consumer(
|
||||||
|
|
|
@ -5,9 +5,10 @@ use log::{debug, info, log, trace, warn, Level};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use tokio::task::JoinHandle;
|
use tokio::task::JoinHandle;
|
||||||
use tokio::time::{sleep, timeout};
|
use tokio::time::{sleep, timeout};
|
||||||
use yellowstone_grpc_client::{GeyserGrpcClient, GeyserGrpcClientResult};
|
use yellowstone_grpc_client::GeyserGrpcClientResult;
|
||||||
use yellowstone_grpc_proto::geyser::{SubscribeRequest, SubscribeUpdate};
|
use yellowstone_grpc_proto::geyser::{SubscribeRequest, SubscribeUpdate};
|
||||||
use yellowstone_grpc_proto::tonic::Status;
|
use yellowstone_grpc_proto::tonic::Status;
|
||||||
|
use crate::yellowstone_grpc_util::{connect_with_timeout_with_buffers, GeyserGrpcClientBufferConfig};
|
||||||
|
|
||||||
enum ConnectionState<S: Stream<Item = Result<SubscribeUpdate, Status>>> {
|
enum ConnectionState<S: Stream<Item = Result<SubscribeUpdate, Status>>> {
|
||||||
NotConnected(Attempt),
|
NotConnected(Attempt),
|
||||||
|
@ -45,12 +46,16 @@ pub fn create_geyser_reconnecting_stream(
|
||||||
log!(if attempt > 1 { Level::Warn } else { Level::Debug }, "Connecting attempt #{} to {}", attempt, addr);
|
log!(if attempt > 1 { Level::Warn } else { Level::Debug }, "Connecting attempt #{} to {}", attempt, addr);
|
||||||
async move {
|
async move {
|
||||||
|
|
||||||
let connect_result = GeyserGrpcClient::connect_with_timeout(
|
let connect_result = connect_with_timeout_with_buffers(
|
||||||
addr, token, config,
|
addr,
|
||||||
|
token,
|
||||||
|
config,
|
||||||
connect_timeout,
|
connect_timeout,
|
||||||
request_timeout,
|
request_timeout,
|
||||||
false)
|
GeyserGrpcClientBufferConfig::optimize_for_subscription(&subscribe_filter),
|
||||||
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
let mut client = connect_result?;
|
let mut client = connect_result?;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ pub mod channel_plugger;
|
||||||
pub mod grpc_subscription_autoreconnect_streams;
|
pub mod grpc_subscription_autoreconnect_streams;
|
||||||
pub mod grpc_subscription_autoreconnect_tasks;
|
pub mod grpc_subscription_autoreconnect_tasks;
|
||||||
pub mod grpcmultiplex_fastestwins;
|
pub mod grpcmultiplex_fastestwins;
|
||||||
mod yellowstone_grpc_util;
|
pub mod yellowstone_grpc_util;
|
||||||
mod obfuscate;
|
mod obfuscate;
|
||||||
|
|
||||||
// 1-based attempt counter
|
// 1-based attempt counter
|
||||||
|
|
|
@ -104,7 +104,7 @@ pub async fn connect_with_timeout_with_buffers<E, T>(
|
||||||
let interceptor = InterceptorXToken { x_token };
|
let interceptor = InterceptorXToken { x_token };
|
||||||
|
|
||||||
let channel = endpoint.connect_lazy();
|
let channel = endpoint.connect_lazy();
|
||||||
let mut client = GeyserGrpcClient::new(
|
let client = GeyserGrpcClient::new(
|
||||||
HealthClient::with_interceptor(channel.clone(), interceptor.clone()),
|
HealthClient::with_interceptor(channel.clone(), interceptor.clone()),
|
||||||
GeyserClient::with_interceptor(channel, interceptor)
|
GeyserClient::with_interceptor(channel, interceptor)
|
||||||
.max_decoding_message_size(GeyserGrpcClient::max_decoding_message_size()),
|
.max_decoding_message_size(GeyserGrpcClient::max_decoding_message_size()),
|
||||||
|
|
Loading…
Reference in New Issue