use clap::Args;
use sc_service::config::TransactionPoolOptions;
#[derive(Debug, Clone, Args)]
pub struct TransactionPoolParams {
#[arg(long, value_name = "COUNT", default_value_t = 8192)]
pub pool_limit: usize,
#[arg(long, value_name = "COUNT", default_value_t = 20480)]
pub pool_kbytes: usize,
#[arg(long, value_name = "SECONDS")]
pub tx_ban_seconds: Option<u64>,
}
impl TransactionPoolParams {
pub fn transaction_pool(&self, is_dev: bool) -> TransactionPoolOptions {
let mut opts = TransactionPoolOptions::default();
opts.ready.count = self.pool_limit;
opts.ready.total_bytes = self.pool_kbytes * 1024;
let factor = 10;
opts.future.count = self.pool_limit / factor;
opts.future.total_bytes = self.pool_kbytes * 1024 / factor;
opts.ban_time = if let Some(ban_seconds) = self.tx_ban_seconds {
std::time::Duration::from_secs(ban_seconds)
} else if is_dev {
std::time::Duration::from_secs(0)
} else {
std::time::Duration::from_secs(30 * 60)
};
opts
}
}