Move binned type, add tests
This commit is contained in:
@@ -121,7 +121,7 @@ where
|
||||
// TODO should we accumulate bins before emit? Maybe not, we want to stay responsive.
|
||||
// Only if the frequency would be high, that would require cpu time checks. Worth it? Measure..
|
||||
self.tmp_agg_results.push_back(ret);
|
||||
if self.curbin >= self.spec.count as u32 {
|
||||
if self.curbin >= self.spec.bin_count() as u32 {
|
||||
self.all_bins_emitted = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ impl ChannelExecFunction for BinnedBinaryChannelExec {
|
||||
let souter = match PreBinnedPatchRange::covering_range(self.query.range().clone(), self.query.bin_count()) {
|
||||
Ok(Some(pre_range)) => {
|
||||
debug!("BinnedBinaryChannelExec found pre_range: {pre_range:?}");
|
||||
if range.grid_spec.bin_t_len() < pre_range.grid_spec.bin_t_len() {
|
||||
if range.grid_spec().bin_t_len() < pre_range.grid_spec.bin_t_len() {
|
||||
let msg = format!(
|
||||
"BinnedBinaryChannelExec incompatible ranges:\npre_range: {pre_range:?}\nrange: {range:?}"
|
||||
);
|
||||
@@ -323,12 +323,12 @@ impl ChannelExecFunction for BinnedJsonChannelExec {
|
||||
{
|
||||
let _ = event_value_shape;
|
||||
let range = BinnedRange::covering_range(self.query.range().clone(), self.query.bin_count())?;
|
||||
let t_bin_count = range.count as u32;
|
||||
let t_bin_count = range.bin_count() as u32;
|
||||
let perf_opts = PerfOpts { inmem_bufcap: 512 };
|
||||
let souter = match PreBinnedPatchRange::covering_range(self.query.range().clone(), self.query.bin_count()) {
|
||||
Ok(Some(pre_range)) => {
|
||||
info!("BinnedJsonChannelExec found pre_range: {pre_range:?}");
|
||||
if range.grid_spec.bin_t_len() < pre_range.grid_spec.bin_t_len() {
|
||||
if range.grid_spec().bin_t_len() < pre_range.grid_spec.bin_t_len() {
|
||||
let msg = format!(
|
||||
"BinnedJsonChannelExec incompatible ranges:\npre_range: {pre_range:?}\nrange: {range:?}"
|
||||
);
|
||||
|
||||
@@ -49,20 +49,35 @@ where
|
||||
let item = EventsDim0 { tss, pulses, values };
|
||||
let item = ChannelEvents::Events(Box::new(item));
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::Data(item)))
|
||||
} else if let Some(item) = item.as_any_mut().downcast_mut::<items::waveevents::WaveEvents<NTY>>() {
|
||||
warn!("WaveEvents");
|
||||
let _tss: VecDeque<u64> = item.tss.iter().map(|x| *x).collect();
|
||||
let _pulses: VecDeque<u64> = item.pulses.iter().map(|x| *x).collect();
|
||||
let _values: VecDeque<Vec<NTY>> = item.vals.iter().map(|x| x.clone()).collect();
|
||||
//let item = EventsDim1 { tss, pulses, values };
|
||||
//let item = ChannelEvents::Events(Box::new(item));
|
||||
//Ok(StreamItem::DataItem(RangeCompletableItem::Data(item)))
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::RangeComplete))
|
||||
} else if let Some(item) = item
|
||||
.as_any_mut()
|
||||
.downcast_mut::<items::xbinnedscalarevents::XBinnedScalarEvents<NTY>>()
|
||||
{
|
||||
warn!("XBinnedScalarEvents");
|
||||
let tss: VecDeque<u64> = item.tss.iter().map(|x| *x).collect();
|
||||
let pulses: VecDeque<u64> = (0..tss.len()).map(|_| 0).collect();
|
||||
let _avgs: VecDeque<f32> = item.avgs.iter().map(|x| x.clone()).collect();
|
||||
let mins: VecDeque<NTY> = item.mins.iter().map(|x| x.clone()).collect();
|
||||
let _maxs: VecDeque<NTY> = item.maxs.iter().map(|x| x.clone()).collect();
|
||||
let item = EventsDim0 {
|
||||
tss,
|
||||
pulses,
|
||||
values: mins,
|
||||
};
|
||||
let item = ChannelEvents::Events(Box::new(item));
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::Data(item)))
|
||||
} else {
|
||||
if let Some(item) = item.as_any_mut().downcast_mut::<items::waveevents::WaveEvents<NTY>>() {
|
||||
warn!("WaveEvents");
|
||||
let _tss: VecDeque<u64> = item.tss.iter().map(|x| *x).collect();
|
||||
let _pulses: VecDeque<u64> = item.pulses.iter().map(|x| *x).collect();
|
||||
let _values: VecDeque<Vec<NTY>> = item.vals.iter().map(|x| x.clone()).collect();
|
||||
//let item = EventsDim1 { tss, pulses, values };
|
||||
//let item = ChannelEvents::Events(Box::new(item));
|
||||
//Ok(StreamItem::DataItem(RangeCompletableItem::Data(item)))
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::RangeComplete))
|
||||
} else {
|
||||
error!("TODO bad, no idea what this item is");
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::RangeComplete))
|
||||
}
|
||||
error!("TODO bad, no idea what this item is\n\n{:?}\n\n", item);
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::RangeComplete))
|
||||
}
|
||||
}
|
||||
RangeCompletableItem::RangeComplete => Ok(StreamItem::DataItem(RangeCompletableItem::RangeComplete)),
|
||||
|
||||
Reference in New Issue
Block a user