From b93deab39eef2ee4503569e26788a34f084ee538 Mon Sep 17 00:00:00 2001 From: Dominik Werder Date: Sat, 30 Nov 2024 11:42:58 +0100 Subject: [PATCH] Add helpers --- src/netpod.rs | 147 ++++++++++++++++++++++++++----------------- src/range/evrange.rs | 16 +++++ 2 files changed, 107 insertions(+), 56 deletions(-) diff --git a/src/netpod.rs b/src/netpod.rs index 6339def..cb15742 100644 --- a/src/netpod.rs +++ b/src/netpod.rs @@ -12,40 +12,55 @@ pub mod log_macros { #[allow(unused)] #[macro_export] macro_rules! trace { - ($($arg:tt)*) => { - eprintln!($($arg)*); + ($fmt:expr) => { + eprintln!(concat!("TRACE ", $fmt)); + }; + ($fmt:expr, $($arg:tt)*) => { + eprintln!(concat!("TRACE ", $fmt), $($arg)*); }; } #[allow(unused)] #[macro_export] macro_rules! debug { - ($($arg:tt)*) => { - eprintln!($($arg)*); + ($fmt:expr) => { + eprintln!(concat!("DEBUG ", $fmt)); + }; + ($fmt:expr, $($arg:tt)*) => { + eprintln!(concat!("DEBUG ", $fmt), $($arg)*); }; } #[allow(unused)] #[macro_export] macro_rules! info { - ($($arg:tt)*) => { - eprintln!($($arg)*); + ($fmt:expr) => { + eprintln!(concat!("INFO ", $fmt)); + }; + ($fmt:expr, $($arg:tt)*) => { + eprintln!(concat!("INFO ", $fmt), $($arg)*); }; } #[allow(unused)] #[macro_export] macro_rules! warn { - ($($arg:tt)*) => { - eprintln!($($arg)*); + ($fmt:expr) => { + eprintln!(concat!("WARN ", $fmt)); + }; + ($fmt:expr, $($arg:tt)*) => { + eprintln!(concat!("WARN ", $fmt), $($arg)*); }; } #[allow(unused)] #[macro_export] macro_rules! error { - ($($arg:tt)*) => { - eprintln!($($arg)*); + ($fmt:expr) => { + eprintln!(concat!("ERROR ", $fmt)); + }; + ($fmt:expr, $($arg:tt)*) => { + eprintln!(concat!("ERROR ", $fmt), $($arg)*); }; } } @@ -2006,6 +2021,18 @@ impl fmt::Display for TsNano { } } +impl AsRef for TsNano { + fn as_ref(&self) -> &TsNano { + &self + } +} + +impl AsRef for TsMs { + fn as_ref(&self) -> &TsMs { + &self + } +} + pub struct TsNanoFmt { ts: TsNano, } @@ -2025,6 +2052,59 @@ impl fmt::Debug for TsNanoFmt { } } +pub struct TsMsFmt { + ts: TsMs, +} + +impl fmt::Display for TsMsFmt { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + chrono::DateTime::from_timestamp_millis(self.ts.ms() as i64) + .unwrap() + .format(DATETIME_FMT_3MS) + .fmt(fmt) + } +} + +impl fmt::Debug for TsMsFmt { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(self, fmt) + } +} + +pub struct TsNanoVecFmt(pub I); + +impl fmt::Display for TsNanoVecFmt +where + I: Clone + IntoIterator, + T: AsRef, +{ + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + write!(fmt, "[")?; + for ts in self.0.clone().into_iter() { + write!(fmt, " {}", ts.as_ref().fmt())?; + } + write!(fmt, " ]")?; + Ok(()) + } +} + +pub struct TsMsVecFmt(pub I); + +impl fmt::Display for TsMsVecFmt +where + I: Clone + IntoIterator, + T: AsRef, +{ + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + write!(fmt, "[")?; + for ts in self.0.clone().into_iter() { + write!(fmt, " {}", ts.as_ref().fmt())?; + } + write!(fmt, " ]")?; + Ok(()) + } +} + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, PartialOrd)] pub struct PulseId(u64); @@ -2977,12 +3057,6 @@ impl TsMs { } } -impl AsRef for TsMs { - fn as_ref(&self) -> &TsMs { - &self - } -} - impl fmt::Display for TsMs { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { write!(fmt, "TsMs {{ {} }}", self.0) @@ -2997,45 +3071,6 @@ impl core::ops::Sub for TsMs { } } -pub struct TsMsFmt { - ts: TsMs, -} - -impl fmt::Debug for TsMsFmt { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - chrono::DateTime::from_timestamp_millis(self.ts.ms() as i64) - .unwrap() - .format(DATETIME_FMT_3MS) - .fmt(fmt) - } -} - -impl fmt::Display for TsMsFmt { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - chrono::DateTime::from_timestamp_millis(self.ts.ms() as i64) - .unwrap() - .format(DATETIME_FMT_3MS) - .fmt(fmt) - } -} - -pub struct TsMsVecFmt(pub I); - -impl fmt::Display for TsMsVecFmt -where - I: Clone + IntoIterator, - T: AsRef, -{ - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - write!(fmt, "[")?; - for ts in self.0.clone().into_iter() { - write!(fmt, " {}", ts.as_ref().fmt())?; - } - write!(fmt, " ]")?; - Ok(()) - } -} - pub trait RetStreamExt: Stream { fn only_first_error(self) -> OnlyFirstError where @@ -4396,7 +4431,7 @@ pub fn status_board() -> Result, StatusBo match x { Ok(x) => Ok(x), Err(e) => { - error!("{e}"); + error!("{}", e); Err(StatusBoardError::CantAcquire) } } diff --git a/src/range/evrange.rs b/src/range/evrange.rs index d142aef..a078ecd 100644 --- a/src/range/evrange.rs +++ b/src/range/evrange.rs @@ -6,6 +6,7 @@ use crate::Dim0Kind; use crate::FromUrl; use crate::NetpodError; use crate::TsNano; +use crate::MS; use chrono::DateTime; use chrono::TimeZone; use chrono::Utc; @@ -91,6 +92,13 @@ impl NanoRange { } } + pub fn from_ms_u64(beg: u64, end: u64) -> Self { + Self { + beg: MS * beg, + end: MS * end, + } + } + pub fn from_ns_u64(beg: u64, end: u64) -> Self { Self { beg, end } } @@ -106,6 +114,14 @@ impl NanoRange { pub fn end(&self) -> u64 { self.end } + + pub fn beg_ts(&self) -> TsNano { + TsNano::from_ns(self.beg) + } + + pub fn end_ts(&self) -> TsNano { + TsNano::from_ns(self.end) + } } impl From<(u64, u64)> for NanoRange {