mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-25 15:19:58 -07:00
general: snapshot
This commit is contained in:
@@ -29,6 +29,14 @@ pub struct Config {
|
||||
/// Delay between runs, default: 0, saved
|
||||
#[arg(long, value_name = "SECONDS")]
|
||||
pub delay: Option<u64>,
|
||||
|
||||
/// Start a dry run, default: false, not saved
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub dry_run: bool,
|
||||
|
||||
/// Record ram usage, default: false, not saved
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub record_ram_usage: bool,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
|
||||
@@ -45,6 +45,14 @@ impl Date {
|
||||
.date_naive(),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn today() -> Self {
|
||||
Self(chrono::offset::Utc::now().date_naive())
|
||||
}
|
||||
|
||||
pub fn yesterday() -> Self {
|
||||
Self(Self::today().checked_sub_days(Days::new(1)).unwrap())
|
||||
}
|
||||
}
|
||||
|
||||
impl MapKey<DateMapChunkId> for Date {
|
||||
|
||||
62
parser/src/structs/exit.rs
Normal file
62
parser/src/structs/exit.rs
Normal file
@@ -0,0 +1,62 @@
|
||||
use std::{
|
||||
process::exit,
|
||||
sync::{
|
||||
atomic::{AtomicBool, Ordering},
|
||||
Arc,
|
||||
},
|
||||
thread::sleep,
|
||||
time::Duration,
|
||||
};
|
||||
|
||||
use super::super::log;
|
||||
|
||||
#[derive(Default, Clone)]
|
||||
pub struct Exit {
|
||||
blocked: Arc<AtomicBool>,
|
||||
active: Arc<AtomicBool>,
|
||||
}
|
||||
|
||||
impl Exit {
|
||||
pub fn new() -> Self {
|
||||
let s = Self {
|
||||
active: Arc::new(AtomicBool::new(false)),
|
||||
blocked: Arc::new(AtomicBool::new(false)),
|
||||
};
|
||||
|
||||
let active = s.active.clone();
|
||||
|
||||
let _blocked = s.blocked.clone();
|
||||
let blocked = move || _blocked.load(Ordering::SeqCst);
|
||||
|
||||
ctrlc::set_handler(move || {
|
||||
log("Exitting...");
|
||||
|
||||
active.store(true, Ordering::SeqCst);
|
||||
|
||||
if blocked() {
|
||||
log("Waiting to exit safely");
|
||||
|
||||
while blocked() {
|
||||
sleep(Duration::from_millis(50));
|
||||
}
|
||||
}
|
||||
|
||||
exit(0);
|
||||
})
|
||||
.expect("Error setting Ctrl-C handler");
|
||||
|
||||
s
|
||||
}
|
||||
|
||||
pub fn block(&self) {
|
||||
self.blocked.store(true, Ordering::SeqCst);
|
||||
}
|
||||
|
||||
pub fn unblock(&self) {
|
||||
self.blocked.store(false, Ordering::SeqCst);
|
||||
}
|
||||
|
||||
pub fn active(&self) -> bool {
|
||||
self.active.load(Ordering::SeqCst)
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,6 @@ use super::Amount;
|
||||
pub struct LiquidityClassification {
|
||||
illiquid: f64,
|
||||
liquid: f64,
|
||||
// highly_liquid: f64,
|
||||
}
|
||||
|
||||
impl LiquidityClassification {
|
||||
@@ -54,11 +53,7 @@ impl LiquidityClassification {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
Self {
|
||||
illiquid,
|
||||
liquid,
|
||||
// highly_liquid: 1.0 - liquid - illiquid,
|
||||
}
|
||||
Self { illiquid, liquid }
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
@@ -136,43 +131,3 @@ where
|
||||
self.highly_liquid -= rhs.highly_liquid;
|
||||
}
|
||||
}
|
||||
|
||||
// impl<T> SplitByLiquidity<T>
|
||||
// where
|
||||
// T: Default,
|
||||
// {
|
||||
// // pub fn get(&self, id: &LiquidityId) -> &T {
|
||||
// // match id {
|
||||
// // LiquidityId::All => &self.all,
|
||||
// // LiquidityId::Illiquid => &self.illiquid,
|
||||
// // LiquidityId::Liquid => &self.liquid,
|
||||
// // LiquidityId::HighlyLiquid => &self.highly_liquid,
|
||||
// // }
|
||||
// // }
|
||||
|
||||
// pub fn get_mut(&mut self, id: &LiquidityId) -> &mut T {
|
||||
// match id {
|
||||
// LiquidityId::All => &mut self.all,
|
||||
// LiquidityId::Illiquid => &mut self.illiquid,
|
||||
// LiquidityId::Liquid => &mut self.liquid,
|
||||
// LiquidityId::HighlyLiquid => &mut self.highly_liquid,
|
||||
// }
|
||||
// }
|
||||
|
||||
// pub fn as_vec(&self) -> Vec<(&T, LiquidityId)> {
|
||||
// vec![
|
||||
// (&self.all, LiquidityId::All),
|
||||
// (&self.illiquid, LiquidityId::Illiquid),
|
||||
// (&self.liquid, LiquidityId::Liquid),
|
||||
// (&self.highly_liquid, LiquidityId::HighlyLiquid),
|
||||
// ]
|
||||
// }
|
||||
// }
|
||||
|
||||
// #[derive(Debug, Clone, Copy)]
|
||||
// pub enum LiquidityId {
|
||||
// All,
|
||||
// Illiquid,
|
||||
// Liquid,
|
||||
// HighlyLiquid,
|
||||
// }
|
||||
|
||||
@@ -16,6 +16,7 @@ mod date_data;
|
||||
mod date_map;
|
||||
mod date_map_chunk_id;
|
||||
mod empty_address_data;
|
||||
mod exit;
|
||||
mod generic_map;
|
||||
mod height;
|
||||
mod height_map;
|
||||
@@ -48,6 +49,7 @@ pub use date_data::*;
|
||||
pub use date_map::*;
|
||||
pub use date_map_chunk_id::*;
|
||||
pub use empty_address_data::*;
|
||||
pub use exit::*;
|
||||
pub use generic_map::*;
|
||||
pub use height::*;
|
||||
pub use height_map::*;
|
||||
|
||||
Reference in New Issue
Block a user