reth_node_core/args/
rpc_state_cache.rs

1use clap::Args;
2use reth_rpc_server_types::constants::cache::{
3    DEFAULT_BLOCK_CACHE_MAX_LEN, DEFAULT_CONCURRENT_DB_REQUESTS, DEFAULT_HEADER_CACHE_MAX_LEN,
4    DEFAULT_RECEIPT_CACHE_MAX_LEN,
5};
6
7/// Parameters to configure RPC state cache.
8#[derive(Debug, Clone, Args, PartialEq, Eq)]
9#[command(next_help_heading = "RPC State Cache")]
10pub struct RpcStateCacheArgs {
11    /// Max number of blocks in cache.
12    #[arg(
13        long = "rpc-cache.max-blocks",
14        default_value_t = DEFAULT_BLOCK_CACHE_MAX_LEN,
15    )]
16    pub max_blocks: u32,
17
18    /// Max number receipts in cache.
19    #[arg(
20        long = "rpc-cache.max-receipts",
21        default_value_t = DEFAULT_RECEIPT_CACHE_MAX_LEN,
22    )]
23    pub max_receipts: u32,
24
25    /// Max number of headers in cache.
26    #[arg(
27        long = "rpc-cache.max-headers",
28        alias = "rpc-cache.max-envs",
29        default_value_t = DEFAULT_HEADER_CACHE_MAX_LEN,
30    )]
31    pub max_headers: u32,
32
33    /// Max number of concurrent database requests.
34    #[arg(
35        long = "rpc-cache.max-concurrent-db-requests",
36        default_value_t = DEFAULT_CONCURRENT_DB_REQUESTS,
37    )]
38    pub max_concurrent_db_requests: usize,
39}
40
41impl RpcStateCacheArgs {
42    /// Sets the Cache sizes to zero, effectively disabling caching.
43    pub const fn set_zero_lengths(&mut self) {
44        self.max_blocks = 0;
45        self.max_receipts = 0;
46        self.max_headers = 0;
47    }
48}
49
50impl Default for RpcStateCacheArgs {
51    fn default() -> Self {
52        Self {
53            max_blocks: DEFAULT_BLOCK_CACHE_MAX_LEN,
54            max_receipts: DEFAULT_RECEIPT_CACHE_MAX_LEN,
55            max_headers: DEFAULT_HEADER_CACHE_MAX_LEN,
56            max_concurrent_db_requests: DEFAULT_CONCURRENT_DB_REQUESTS,
57        }
58    }
59}