This commit is contained in:
Dominik Werder
2024-09-11 17:23:11 +02:00
parent 741c1380c7
commit f550d37602
26 changed files with 932 additions and 196 deletions
+29 -14
View File
@@ -1897,14 +1897,12 @@ impl TsNano {
}
impl fmt::Debug for TsNano {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
let ts = Utc
.timestamp_opt((self.0 / SEC) as i64, (self.0 % SEC) as u32)
.earliest()
.unwrap_or(Default::default());
f.debug_struct("TsNano")
.field("ts", &ts.format(DATETIME_FMT_3MS).to_string())
.finish()
write!(fmt, "TsNano {{ {} }}", ts.format(DATETIME_FMT_3MS))
}
}
@@ -2380,22 +2378,31 @@ where
pub bin_cnt: u64,
}
impl<T> fmt::Debug for BinnedRange<T>
where
T: Dim0Index,
{
impl fmt::Debug for BinnedRange<TsNano> {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.debug_struct("BinnedRange")
.field("bin_len", &self.bin_len)
.field("bin_off", &self.bin_off)
.field("bin_cnt", &self.bin_cnt)
.finish()
let beg = self.bin_len.times(self.bin_off);
let end = self.bin_len.times(self.bin_off + self.bin_cnt);
write!(fmt, "BinnedRange {{ {}, {}, {} }}", beg, end, self.bin_len.to_dt_ms())
}
}
impl fmt::Debug for BinnedRange<PulseId> {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
write!(fmt, "BinnedRange<PulseId> {{ .. }}")
}
}
impl fmt::Display for BinnedRange<TsNano> {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt::Debug::fmt(self, fmt)
}
}
impl BinnedRange<TsNano> {
pub fn to_nano_range(&self) -> NanoRange {
self.full_range()
let beg = self.bin_len.times(self.bin_off).as_u64();
let end = self.bin_len.times(self.bin_off + self.bin_cnt).as_u64();
NanoRange { beg, end }
}
pub fn from_nano_range(range: NanoRange, bin_len: DtMs) -> Self {
@@ -2407,6 +2414,14 @@ impl BinnedRange<TsNano> {
bin_cnt: off2 - off1,
}
}
pub fn nano_beg(&self) -> TsNano {
self.bin_len.times(self.bin_off)
}
pub fn nano_end(&self) -> TsNano {
self.bin_len.times(self.bin_off + self.bin_cnt)
}
}
impl<T> BinnedRange<T>
+14 -1
View File
@@ -74,6 +74,10 @@ impl NanoRange {
}
}
pub fn from_ns_u64(beg: u64, end: u64) -> Self {
Self { beg, end }
}
pub fn delta(&self) -> u64 {
self.end - self.beg
}
@@ -113,7 +117,7 @@ pub struct PulseRange {
pub end: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[derive(Clone, Serialize, Deserialize, PartialEq)]
pub enum SeriesRange {
TimeRange(NanoRange),
PulseRange(PulseRange),
@@ -163,6 +167,15 @@ impl SeriesRange {
}
}
impl fmt::Debug for SeriesRange {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
match self {
SeriesRange::TimeRange(range) => write!(fmt, "SeriesRange::TimeRange {{ {} }}", range),
SeriesRange::PulseRange(_) => write!(fmt, "SeriesRange::PulseRange {{ .. }}"),
}
}
}
impl From<NanoRange> for SeriesRange {
fn from(k: NanoRange) -> Self {
Self::TimeRange(k)