From ec425198f01aeeddfec3c28624ce8a1fc708081d Mon Sep 17 00:00:00 2001 From: Dominik Werder Date: Tue, 22 Oct 2024 16:33:31 +0200 Subject: [PATCH] WIP --- crates/items_0/src/timebin.rs | 2 ++ .../timeweight/timeweight_events_dyn.rs | 31 +++++++++++++------ crates/items_2/src/eventsdim0.rs | 14 ++++++--- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/crates/items_0/src/timebin.rs b/crates/items_0/src/timebin.rs index 52ce431..ef3a562 100644 --- a/crates/items_0/src/timebin.rs +++ b/crates/items_0/src/timebin.rs @@ -109,6 +109,8 @@ pub trait BinningggContainerBinsDyn: fmt::Debug + Send + fmt::Display + WithLen pub type BinsBoxed = Box; +pub type EventsBoxed = Box; + pub trait BinningggBinnerTy: fmt::Debug + Send { type Input: fmt::Debug; type Output: fmt::Debug; diff --git a/crates/items_2/src/binning/timeweight/timeweight_events_dyn.rs b/crates/items_2/src/binning/timeweight/timeweight_events_dyn.rs index d94f8c3..508930a 100644 --- a/crates/items_2/src/binning/timeweight/timeweight_events_dyn.rs +++ b/crates/items_2/src/binning/timeweight/timeweight_events_dyn.rs @@ -12,6 +12,9 @@ use items_0::timebin::BinningggBinnerDyn; use items_0::timebin::BinningggContainerBinsDyn; use items_0::timebin::BinningggContainerEventsDyn; use items_0::timebin::BinningggError; +use items_0::timebin::BinsBoxed; +use items_0::timebin::EventsBoxed; +use netpod::log::*; use netpod::BinnedRange; use netpod::TsNano; use std::arch::x86_64; @@ -52,7 +55,7 @@ impl BinnedEventsTimeweightTrait for BinnedEventsTimeweightDynbox where EVT: EventValueType, { - fn ingest(&mut self, evs_all: Box) -> Result<(), BinningggError> { + fn ingest(&mut self, evs_all: EventsBoxed) -> Result<(), BinningggError> { todo!() } @@ -66,7 +69,7 @@ where todo!() } - fn output(&mut self) -> Result, BinningggError> { + fn output(&mut self) -> Result { // self.binner.output() todo!() } @@ -88,21 +91,31 @@ impl BinnedEventsTimeweightLazy { } impl BinnedEventsTimeweightTrait for BinnedEventsTimeweightLazy { - fn ingest(&mut self, evs_all: Box) -> Result<(), BinningggError> { - // TODO the container must provide a method to create the dyn binner. - let binned_events = self.binned_events.get_or_insert_with(|| todo!()); - todo!() + fn ingest(&mut self, evs_all: EventsBoxed) -> Result<(), BinningggError> { + self.binned_events + .get_or_insert_with(|| evs_all.binned_events_timeweight_traitobj()) + .ingest(evs_all) } fn input_done_range_final(&mut self) -> Result<(), BinningggError> { - todo!() + debug!("TODO something to do if we miss the binner here?"); + self.binned_events + .as_mut() + .map(|x| x.input_done_range_final()) + .unwrap_or(Ok(())) } fn input_done_range_open(&mut self) -> Result<(), BinningggError> { - todo!() + debug!("TODO something to do if we miss the binner here?"); + self.binned_events + .as_mut() + .map(|x| x.input_done_range_open()) + .unwrap_or(Ok(())) } - fn output(&mut self) -> Result, BinningggError> { + fn output(&mut self) -> Result { + debug!("TODO something to do if we miss the binner here?"); + // TODO change trait because without binner we can not produce any container here todo!() } } diff --git a/crates/items_2/src/eventsdim0.rs b/crates/items_2/src/eventsdim0.rs index 70d4347..4afdb91 100644 --- a/crates/items_2/src/eventsdim0.rs +++ b/crates/items_2/src/eventsdim0.rs @@ -1105,11 +1105,15 @@ impl Events for EventsDim0 { } fn to_container_events(&self) -> Box { - // let tss = self.tss.iter().map(|&x| TsNano::from_ns(x)).collect(); - // let vals = self.values.clone(); - // let ret = crate::binning::container_events::ContainerEvents::from_constituents(tss, vals); - // Box::new(ret) - todo!() + use crate::binning::container_events::ContainerEvents; + let tss = self.tss.iter().map(|&x| TsNano::from_ns(x)).collect(); + if let Some(evs) = self.as_any_ref().downcast_ref::>() { + let vals = evs.values.clone(); + let ret = ContainerEvents::::from_constituents(tss, vals); + Box::new(ret) + } else { + todo!() + } } }