mirror of
https://github.com/hinto-janai/cuprate.git
synced 2024-11-16 15:58:14 +00:00
add statics module
This commit is contained in:
parent
02a99f3bb9
commit
6878a25266
2 changed files with 49 additions and 1 deletions
|
@ -15,8 +15,13 @@ mod blockchain;
|
||||||
mod config;
|
mod config;
|
||||||
mod p2p;
|
mod p2p;
|
||||||
mod rpc;
|
mod rpc;
|
||||||
|
mod statics;
|
||||||
mod txpool;
|
mod txpool;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
todo!()
|
// Initialize global static `LazyLock` data.
|
||||||
|
statics::init_lazylock_statics();
|
||||||
|
|
||||||
|
// TODO: do other stuff
|
||||||
|
todo!();
|
||||||
}
|
}
|
||||||
|
|
43
binaries/cuprated/src/statics.rs
Normal file
43
binaries/cuprated/src/statics.rs
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
//! Global `static`s used throughout `cuprated`.
|
||||||
|
|
||||||
|
use std::{
|
||||||
|
sync::{atomic::AtomicU64, LazyLock},
|
||||||
|
time::{SystemTime, UNIX_EPOCH},
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Define all the `static`s in the file/module.
|
||||||
|
///
|
||||||
|
/// This wraps all `static`s inside a `LazyLock` and generates
|
||||||
|
/// a [`init_lazylock_statics`] function that must/should be
|
||||||
|
/// used by `main()` early on.
|
||||||
|
macro_rules! define_lazylock_statics {
|
||||||
|
($(
|
||||||
|
$( #[$attr:meta] )*
|
||||||
|
$name:ident: $t:ty = $init_fn:expr;
|
||||||
|
)*) => {
|
||||||
|
/// Initialize global static `LazyLock` data.
|
||||||
|
pub fn init_lazylock_statics() {
|
||||||
|
$(
|
||||||
|
LazyLock::force(&$name);
|
||||||
|
)*
|
||||||
|
}
|
||||||
|
|
||||||
|
$(
|
||||||
|
$(#[$attr])*
|
||||||
|
pub static $name: LazyLock<$t> = LazyLock::new(|| $init_fn);
|
||||||
|
)*
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
define_lazylock_statics! {
|
||||||
|
/// The start time of `cuprated`.
|
||||||
|
///
|
||||||
|
/// This must/should be set early on in `main()`.
|
||||||
|
START_INSTANT: SystemTime = SystemTime::now();
|
||||||
|
|
||||||
|
/// Start time of `cuprated` as a UNIX timestamp.
|
||||||
|
START_INSTANT_UNIX: u64 = START_INSTANT
|
||||||
|
.duration_since(UNIX_EPOCH)
|
||||||
|
.expect("Failed to set `cuprated` startup time.")
|
||||||
|
.as_secs();
|
||||||
|
}
|
Loading…
Reference in a new issue