casper_node/reactor/main_reactor/
config.rs1use datasize::DataSize;
2use serde::{Deserialize, Serialize};
3use tracing::error;
4
5use casper_types::Chainspec;
6
7use crate::{
8 logging::LoggingConfig, types::NodeConfig, BinaryPortConfig, BlockAccumulatorConfig,
9 BlockSynchronizerConfig, BlockValidatorConfig, ConsensusConfig, ContractRuntimeConfig,
10 DiagnosticsPortConfig, EventStreamServerConfig, FetcherConfig, GossipConfig, NetworkConfig,
11 RestServerConfig, StorageConfig, TransactionAcceptorConfig, TransactionBufferConfig,
12 UpgradeWatcherConfig,
13};
14
15#[derive(Clone, DataSize, Debug, Default, Serialize, Deserialize)]
17#[serde(deny_unknown_fields)]
19pub struct Config {
20 pub node: NodeConfig,
22 pub logging: LoggingConfig,
24 pub consensus: ConsensusConfig,
26 pub network: NetworkConfig,
28 pub event_stream_server: EventStreamServerConfig,
30 pub rest_server: RestServerConfig,
32 pub storage: StorageConfig,
34 pub gossip: GossipConfig,
36 pub fetcher: FetcherConfig,
38 pub contract_runtime: ContractRuntimeConfig,
40 pub transaction_acceptor: TransactionAcceptorConfig,
42 pub transaction_buffer: TransactionBufferConfig,
44 pub diagnostics_port: DiagnosticsPortConfig,
46 pub block_accumulator: BlockAccumulatorConfig,
48 pub block_synchronizer: BlockSynchronizerConfig,
50 pub block_validator: BlockValidatorConfig,
52 pub upgrade_watcher: UpgradeWatcherConfig,
54 pub binary_port_server: BinaryPortConfig,
56}
57
58impl Config {
59 pub(crate) fn ensure_valid(&mut self, chainspec: &Chainspec) {
62 if self.transaction_acceptor.timestamp_leeway
63 > chainspec.transaction_config.max_timestamp_leeway
64 {
65 error!(
66 configured_timestamp_leeway = %self.transaction_acceptor.timestamp_leeway,
67 max_timestamp_leeway = %chainspec.transaction_config.max_timestamp_leeway,
68 "setting value for 'transaction_acceptor.timestamp_leeway' to maximum permitted by \
69 chainspec 'transaction_config.max_timestamp_leeway'",
70 );
71 self.transaction_acceptor.timestamp_leeway =
72 chainspec.transaction_config.max_timestamp_leeway;
73 }
74 }
75
76 #[cfg(test)]
78 pub(crate) fn with_network_config(mut self, network_config: NetworkConfig) -> Self {
79 self.network = network_config;
80 self
81 }
82}