use clap::{Args, ValueEnum};
use pezsc_transaction_pool::TransactionPoolOptions;
#[derive(Debug, Clone, Copy, ValueEnum)]
#[value(rename_all = "kebab-case")]
pub enum TransactionPoolType {
SingleState,
ForkAware,
}
impl Into<pezsc_transaction_pool::TransactionPoolType> for TransactionPoolType {
fn into(self) -> pezsc_transaction_pool::TransactionPoolType {
match self {
TransactionPoolType::SingleState => {
pezsc_transaction_pool::TransactionPoolType::SingleState
},
TransactionPoolType::ForkAware => {
pezsc_transaction_pool::TransactionPoolType::ForkAware
},
}
}
}
#[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>,
#[arg(long, value_enum, default_value_t = TransactionPoolType::ForkAware)]
pub pool_type: TransactionPoolType,
}
impl TransactionPoolParams {
pub fn transaction_pool(&self, is_dev: bool) -> TransactionPoolOptions {
TransactionPoolOptions::new_with_params(
self.pool_limit,
self.pool_kbytes * 1024,
self.tx_ban_seconds,
self.pool_type.into(),
is_dev,
)
}
}