Skip to content

Commit b119a78

Browse files
Allow Channels to Be Configurable Sizes
1 parent 5f66fb8 commit b119a78

File tree

2 files changed

+20
-2
lines changed
  • datasources/rpc-transaction-crawler-datasource/src
  • examples/meteora-activities/src

2 files changed

+20
-2
lines changed

datasources/rpc-transaction-crawler-datasource/src/lib.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ pub struct ConnectionConfig {
9494
pub batch_limit: usize,
9595
pub polling_interval: Duration,
9696
pub max_concurrent_requests: usize,
97+
pub max_signature_channel_size: Option<usize>,
98+
pub max_transaction_channel_size: Option<usize>,
9799
pub retry_config: RetryConfig,
98100
}
99101

@@ -103,12 +105,16 @@ impl ConnectionConfig {
103105
polling_interval: Duration,
104106
max_concurrent_requests: usize,
105107
retry_config: RetryConfig,
108+
max_signature_channel_size: Option<usize>, // None will default to 1000
109+
max_transaction_channel_size: Option<usize>, // None will default to 1000
106110
) -> Self {
107111
ConnectionConfig {
108112
batch_limit,
109113
polling_interval,
110114
max_concurrent_requests,
111115
retry_config,
116+
max_signature_channel_size,
117+
max_transaction_channel_size,
112118
}
113119
}
114120

@@ -118,6 +124,8 @@ impl ConnectionConfig {
118124
polling_interval: Duration::from_secs(5),
119125
max_concurrent_requests: 5,
120126
retry_config: RetryConfig::default(),
127+
max_signature_channel_size: None,
128+
max_transaction_channel_size: None,
121129
}
122130
}
123131
}
@@ -165,8 +173,16 @@ impl Datasource for RpcTransactionCrawler {
165173
let sender = sender.clone();
166174
let commitment = self.commitment;
167175

168-
let (signature_sender, signature_receiver) = mpsc::channel(1000);
169-
let (transaction_sender, transaction_receiver) = mpsc::channel(1000);
176+
let (signature_sender, signature_receiver) = mpsc::channel(
177+
self.connection_config
178+
.max_signature_channel_size
179+
.unwrap_or(1000),
180+
);
181+
let (transaction_sender, transaction_receiver) = mpsc::channel(
182+
self.connection_config
183+
.max_transaction_channel_size
184+
.unwrap_or(1000),
185+
);
170186

171187
let signature_fetcher = signature_fetcher(
172188
rpc_client.clone(),

examples/meteora-activities/src/main.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ pub async fn main() -> CarbonResult<()> {
2828
Duration::from_secs(5), // Polling interval
2929
5, // Max Concurrent Requests
3030
RetryConfig::no_retry(), // Retry config
31+
None, // Max Signature Channel Size
32+
None, // Max Transaction Channel Size
3133
);
3234

3335
let transaction_crawler = RpcTransactionCrawler::new(

0 commit comments

Comments
 (0)