1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#![doc(html_root_url = "https://docs.rs/casper-node/0.6.3")]
#![doc(
html_favicon_url = "https://raw.githubusercontent.com/CasperLabs/casper-node/master/images/CasperLabs_Logo_Favicon_RGB_50px.png",
html_logo_url = "https://raw.githubusercontent.com/CasperLabs/casper-node/master/images/CasperLabs_Logo_Symbol_RGB.png",
test(attr(forbid(warnings)))
)]
#![warn(
missing_docs,
trivial_casts,
trivial_numeric_casts,
unused_qualifications
)]
#![feature(test)]
extern crate test;
pub mod components;
pub mod crypto;
pub mod effect;
pub mod logging;
pub mod protocol;
pub mod reactor;
#[cfg(test)]
pub mod testing;
pub mod tls;
pub mod types;
pub mod utils;
use std::sync::{atomic::AtomicBool, Arc};
use ansi_term::Color::Red;
use once_cell::sync::Lazy;
#[cfg(not(test))]
use rand::SeedableRng;
pub use components::{
chainspec_loader::{Chainspec, Error as ChainspecError},
consensus::Config as ConsensusConfig,
contract_runtime::Config as ContractRuntimeConfig,
deploy_acceptor::Config as DeployAcceptorConfig,
event_stream_server::Config as EventStreamServerConfig,
fetcher::Config as FetcherConfig,
gossiper::{Config as GossipConfig, Error as GossipError},
rest_server::Config as RestServerConfig,
rpc_server::{rpcs, Config as RpcServerConfig},
small_network::{Config as SmallNetworkConfig, Error as SmallNetworkError},
storage::{Config as StorageConfig, Error as StorageError},
};
pub use types::NodeRng;
pub use utils::OS_PAGE_SIZE;
pub const MAX_THREAD_COUNT: usize = 512;
fn version_string(color: bool) -> String {
let mut version = if env!("VERGEN_SEMVER_LIGHTWEIGHT") == "UNKNOWN" {
env!("CARGO_PKG_VERSION").to_string()
} else {
format!(
"{}-{}",
env!("VERGEN_SEMVER_LIGHTWEIGHT"),
env!("VERGEN_SHA_SHORT"),
)
};
if env!("NODE_BUILD_PROFILE") != "release" {
version += "@";
let profile = env!("NODE_BUILD_PROFILE").to_uppercase();
version.push_str(&if color {
Red.paint(&profile).to_string()
} else {
profile
});
}
version
}
pub static VERSION_STRING_COLOR: Lazy<String> = Lazy::new(|| version_string(true));
pub static VERSION_STRING: Lazy<String> = Lazy::new(|| version_string(false));
pub static QUEUE_DUMP_REQUESTED: Lazy<Arc<AtomicBool>> =
Lazy::new(|| Arc::new(AtomicBool::new(false)));
pub fn setup_signal_hooks() {
let _ = signal_hook::flag::register(libc::SIGUSR1, QUEUE_DUMP_REQUESTED.clone());
}
#[cfg(not(test))]
pub fn new_rng() -> NodeRng {
NodeRng::from_entropy()
}
#[cfg(test)]
pub fn new_rng() -> NodeRng {
NodeRng::new()
}