Refactor series lookup
This commit is contained in:
@@ -1011,7 +1011,7 @@ impl<NTY: ScalarOps> TimeBinned for BinsDim0<NTY> {
|
||||
fn bins_timebin_fill_empty_00() {
|
||||
let mut bins = BinsDim0::<u32>::empty();
|
||||
let binrange = BinnedRangeEnum::Time(BinnedRange {
|
||||
bin_len: TsNano(SEC * 2),
|
||||
bin_len: TsNano::from_ns(SEC * 2),
|
||||
bin_off: 9,
|
||||
bin_cnt: 5,
|
||||
});
|
||||
@@ -1033,7 +1033,7 @@ fn bins_timebin_fill_empty_00() {
|
||||
fn bins_timebin_fill_empty_01() {
|
||||
let mut bins = BinsDim0::<u32>::empty();
|
||||
let binrange = BinnedRangeEnum::Time(BinnedRange {
|
||||
bin_len: TsNano(SEC * 2),
|
||||
bin_len: TsNano::from_ns(SEC * 2),
|
||||
bin_off: 9,
|
||||
bin_cnt: 5,
|
||||
});
|
||||
@@ -1056,7 +1056,7 @@ fn bins_timebin_fill_empty_01() {
|
||||
fn bins_timebin_push_empty_00() {
|
||||
let mut bins = BinsDim0::<u32>::empty();
|
||||
let binrange = BinnedRangeEnum::Time(BinnedRange {
|
||||
bin_len: TsNano(SEC * 2),
|
||||
bin_len: TsNano::from_ns(SEC * 2),
|
||||
bin_off: 9,
|
||||
bin_cnt: 5,
|
||||
});
|
||||
@@ -1078,7 +1078,7 @@ fn bins_timebin_push_empty_00() {
|
||||
fn bins_timebin_push_empty_01() {
|
||||
let mut bins = BinsDim0::<u32>::empty();
|
||||
let binrange = BinnedRangeEnum::Time(BinnedRange {
|
||||
bin_len: TsNano(SEC * 2),
|
||||
bin_len: TsNano::from_ns(SEC * 2),
|
||||
bin_off: 9,
|
||||
bin_cnt: 5,
|
||||
});
|
||||
@@ -1104,7 +1104,7 @@ fn bins_timebin_ingest_only_before() {
|
||||
bins.push(SEC * 2, SEC * 4, 3, 7, 9, 8.1);
|
||||
bins.push(SEC * 4, SEC * 6, 3, 6, 9, 8.2);
|
||||
let binrange = BinnedRangeEnum::Time(BinnedRange {
|
||||
bin_len: TsNano(SEC * 2),
|
||||
bin_len: TsNano::from_ns(SEC * 2),
|
||||
bin_off: 9,
|
||||
bin_cnt: 5,
|
||||
});
|
||||
@@ -1127,7 +1127,7 @@ fn bins_timebin_ingest_00() {
|
||||
bins.push(SEC * 21, SEC * 22, 5, 71, 93, 86.);
|
||||
bins.push(SEC * 23, SEC * 24, 6, 72, 92, 81.);
|
||||
let binrange = BinnedRangeEnum::Time(BinnedRange {
|
||||
bin_len: TsNano(SEC * 2),
|
||||
bin_len: TsNano::from_ns(SEC * 2),
|
||||
bin_off: 9,
|
||||
bin_cnt: 5,
|
||||
});
|
||||
@@ -1148,7 +1148,7 @@ fn bins_timebin_ingest_00() {
|
||||
#[test]
|
||||
fn bins_timebin_ingest_continuous_00() {
|
||||
let binrange = BinnedRangeEnum::Time(BinnedRange {
|
||||
bin_len: TsNano(SEC * 2),
|
||||
bin_len: TsNano::from_ns(SEC * 2),
|
||||
bin_off: 9,
|
||||
bin_cnt: 20,
|
||||
});
|
||||
|
||||
@@ -1292,7 +1292,7 @@ fn binner_00() {
|
||||
let mut ev1 = EventsDim0::empty();
|
||||
ev1.push(MS * 1200, 3, 1.2f32);
|
||||
ev1.push(MS * 3200, 3, 3.2f32);
|
||||
let binrange = BinnedRangeEnum::from_custom(TsNano(SEC), 0, 10);
|
||||
let binrange = BinnedRangeEnum::from_custom(TsNano::from_ns(SEC), 0, 10);
|
||||
let mut binner = ev1.time_binner_new(binrange, true);
|
||||
binner.ingest(ev1.as_time_binnable_mut());
|
||||
eprintln!("{:?}", binner);
|
||||
@@ -1306,7 +1306,7 @@ fn binner_01() {
|
||||
ev1.push(MS * 1300, 3, 1.3);
|
||||
ev1.push(MS * 2100, 3, 2.1);
|
||||
ev1.push(MS * 2300, 3, 2.3);
|
||||
let binrange = BinnedRangeEnum::from_custom(TsNano(SEC), 0, 10);
|
||||
let binrange = BinnedRangeEnum::from_custom(TsNano::from_ns(SEC), 0, 10);
|
||||
let mut binner = ev1.time_binner_new(binrange, true);
|
||||
binner.ingest(ev1.as_time_binnable_mut());
|
||||
eprintln!("{:?}", binner);
|
||||
@@ -1386,7 +1386,7 @@ fn bin_binned_02() {
|
||||
#[test]
|
||||
fn events_timebin_ingest_continuous_00() {
|
||||
let binrange = BinnedRangeEnum::Time(BinnedRange {
|
||||
bin_len: TsNano(SEC * 2),
|
||||
bin_len: TsNano::from_ns(SEC * 2),
|
||||
bin_off: 9,
|
||||
bin_cnt: 20,
|
||||
});
|
||||
|
||||
@@ -16,6 +16,7 @@ use items_0::streamitem::ERROR_FRAME_TYPE_ID;
|
||||
use items_0::streamitem::EVENT_QUERY_JSON_STRING_FRAME;
|
||||
use items_0::streamitem::SITEMTY_NONSPEC_FRAME_TYPE_ID;
|
||||
use items_0::Events;
|
||||
use netpod::log::*;
|
||||
use serde::de::DeserializeOwned;
|
||||
use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
@@ -82,7 +83,10 @@ where
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::RangeComplete)) => make_range_complete_frame(),
|
||||
Ok(StreamItem::Log(item)) => make_log_frame(item),
|
||||
Ok(StreamItem::Stats(item)) => make_stats_frame(item),
|
||||
Err(e) => make_error_frame(e),
|
||||
Err(e) => {
|
||||
info!("calling make_error_frame for [[{e}]]");
|
||||
make_error_frame(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -181,7 +185,7 @@ fn test_frame_log() {
|
||||
#[test]
|
||||
fn test_frame_error() {
|
||||
use crate::channelevents::ChannelEvents;
|
||||
use crate::frame::decode_from_slice;
|
||||
use crate::frame::json_from_slice;
|
||||
let item: Sitemty<ChannelEvents> = Err(Error::with_msg_no_trace(format!("dummy-error-message")));
|
||||
let buf = Framable::make_frame(&item).unwrap();
|
||||
let len = u32::from_le_bytes(buf[12..16].try_into().unwrap());
|
||||
@@ -190,5 +194,5 @@ fn test_frame_error() {
|
||||
panic!("bad tyid");
|
||||
}
|
||||
eprintln!("buf len {} len {}", buf.len(), len);
|
||||
let item2: Error = decode_from_slice(&buf[20..20 + len as usize]).unwrap();
|
||||
let item2: Error = json_from_slice(&buf[20..20 + len as usize]).unwrap();
|
||||
}
|
||||
|
||||
@@ -146,6 +146,20 @@ where
|
||||
postcard::from_bytes(buf).map_err(|e| format!("{e}").into())
|
||||
}
|
||||
|
||||
fn json_to_vec<T>(item: T) -> Result<Vec<u8>, Error>
|
||||
where
|
||||
T: Serialize,
|
||||
{
|
||||
serde_json::to_vec(&item).map_err(Error::from_string)
|
||||
}
|
||||
|
||||
pub fn json_from_slice<T>(buf: &[u8]) -> Result<T, Error>
|
||||
where
|
||||
T: for<'de> serde::Deserialize<'de>,
|
||||
{
|
||||
serde_json::from_slice(buf).map_err(Error::from_string)
|
||||
}
|
||||
|
||||
pub fn encode_to_vec<T>(item: T) -> Result<Vec<u8>, Error>
|
||||
where
|
||||
T: Serialize,
|
||||
@@ -213,7 +227,8 @@ where
|
||||
// TODO remove duplication for these similar `make_*_frame` functions:
|
||||
|
||||
pub fn make_error_frame(error: &err::Error) -> Result<BytesMut, Error> {
|
||||
match encode_to_vec(error) {
|
||||
// error frames are always encoded as json
|
||||
match json_to_vec(error) {
|
||||
Ok(enc) => {
|
||||
let mut h = crc32fast::Hasher::new();
|
||||
h.update(&enc);
|
||||
@@ -335,7 +350,8 @@ where
|
||||
)));
|
||||
}
|
||||
if frame.tyid() == ERROR_FRAME_TYPE_ID {
|
||||
let k: err::Error = match decode_from_slice(frame.buf()) {
|
||||
// error frames are always encoded as json
|
||||
let k: err::Error = match json_from_slice(frame.buf()) {
|
||||
Ok(item) => item,
|
||||
Err(e) => {
|
||||
error!("deserialize len {} ERROR_FRAME_TYPE_ID {}", frame.buf().len(), e);
|
||||
|
||||
Reference in New Issue
Block a user