mirror of
https://github.com/0xfnzero/solana-streamer.git
synced 2026-08-20 04:18:06 +00:00
feat: Major refactor with batch processing and performance optimization
- Refactor streaming architecture with modular grpc components - Add batch processing system with backpressure strategies - Implement performance monitoring and metrics collection - Add multi-protocol parser with block metadata support - Enhance configuration system with preset profiles - Add parse_tx_events example and update documentation - Optimize yellowstone_grpc client complexity
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
use std::time::Duration;
|
||||
use tonic::transport::channel::ClientTlsConfig;
|
||||
use yellowstone_grpc_client::{GeyserGrpcClient, Interceptor};
|
||||
use crate::common::AnyResult;
|
||||
use crate::streaming::common::constants::{
|
||||
DEFAULT_CONNECT_TIMEOUT, DEFAULT_REQUEST_TIMEOUT, DEFAULT_MAX_DECODING_MESSAGE_SIZE
|
||||
};
|
||||
|
||||
/// gRPC连接池 - 简化版本
|
||||
pub struct GrpcConnectionPool {
|
||||
endpoint: String,
|
||||
x_token: Option<String>,
|
||||
}
|
||||
|
||||
impl GrpcConnectionPool {
|
||||
pub fn new(endpoint: String, x_token: Option<String>) -> Self {
|
||||
Self {
|
||||
endpoint,
|
||||
x_token,
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn create_connection(&self) -> AnyResult<GeyserGrpcClient<impl Interceptor>> {
|
||||
let builder = GeyserGrpcClient::build_from_shared(self.endpoint.clone())?
|
||||
.x_token(self.x_token.clone())?
|
||||
.tls_config(ClientTlsConfig::new().with_native_roots())?
|
||||
.max_decoding_message_size(DEFAULT_MAX_DECODING_MESSAGE_SIZE)
|
||||
.connect_timeout(Duration::from_secs(DEFAULT_CONNECT_TIMEOUT))
|
||||
.timeout(Duration::from_secs(DEFAULT_REQUEST_TIMEOUT));
|
||||
|
||||
Ok(builder.connect().await?)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user