#![forbid(unsafe_code)]
#![allow(clippy::blocks_in_conditions)]
#![allow(clippy::type_complexity)]
#[macro_use]
extern crate async_trait;
#[macro_use]
extern crate tracing;
#[cfg(feature = "metrics")]
extern crate snarkos_node_metrics as metrics;
pub use snarkos_node_bft_events as events;
pub use snarkos_node_bft_ledger_service as ledger_service;
pub use snarkos_node_bft_storage_service as storage_service;
pub mod helpers;
mod bft;
pub use bft::*;
mod gateway;
pub use gateway::*;
mod primary;
pub use primary::*;
mod sync;
pub use sync::*;
mod worker;
pub use worker::*;
pub const CONTEXT: &str = "[MemoryPool]";
pub const MEMORY_POOL_PORT: u16 = 5000;
pub const MAX_BATCH_DELAY_IN_MS: u64 = 2500; pub const MIN_BATCH_DELAY_IN_SECS: u64 = 1; pub const MAX_FETCH_TIMEOUT_IN_MS: u64 = 3 * MAX_BATCH_DELAY_IN_MS; pub const MAX_LEADER_CERTIFICATE_DELAY_IN_SECS: i64 = 2 * MAX_BATCH_DELAY_IN_MS as i64 / 1000; pub const MAX_TIMESTAMP_DELTA_IN_SECS: i64 = 10; pub const MAX_WORKERS: u8 = 1;
pub const PRIMARY_PING_IN_MS: u64 = 2 * MAX_BATCH_DELAY_IN_MS; pub const WORKER_PING_IN_MS: u64 = 4 * MAX_BATCH_DELAY_IN_MS;
#[macro_export]
macro_rules! spawn_blocking {
($expr:expr) => {
match tokio::task::spawn_blocking(move || $expr).await {
Ok(value) => value,
Err(error) => Err(anyhow::anyhow!("[tokio::spawn_blocking] {error}")),
}
};
}