Deliver float events from scylla table

This commit is contained in:
Dominik Werder
2022-04-22 22:44:32 +02:00
parent 22b43fe012
commit e7016eda36
23 changed files with 917 additions and 162 deletions
+1 -4
View File
@@ -494,10 +494,7 @@ pub async fn read_data_1(
DbrType::DbrTimeDouble => {
if datafile_header.dbr_count == 1 {
trace!("~~~~~~~~~~~~~~~~~~~~~ read scalar DbrTimeDouble");
let mut evs = ScalarEvents {
tss: vec![],
values: vec![],
};
let mut evs = ScalarEvents::empty();
let n1 = datafile_header.num_samples as usize;
//let n2 = datafile_header.dbr_type.byte_len();
let n2 = 2 + 2 + 4 + 4 + (4) + 8;
+9 -7
View File
@@ -644,23 +644,25 @@ fn events_item_to_framable(ei: EventsItem) -> Result<Box<dyn Framable + Send>, E
match ei {
EventsItem::Plain(PlainEvents::Scalar(ScalarPlainEvents::I32(h))) => {
let range: NanoRange = err::todoval();
let (x, y) = h
let (tss, pulses, values) = h
.tss
.into_iter()
.zip(h.pulses.into_iter())
.zip(h.values.into_iter())
.filter_map(|(j, k)| {
if j < range.beg || j >= range.end {
.filter_map(|((t, p), v)| {
if t < range.beg || t >= range.end {
None
} else {
Some((j, k))
Some((t, p, v))
}
})
.fold((vec![], vec![]), |(mut a, mut b), (j, k)| {
.fold((vec![], vec![], vec![]), |(mut a, mut b, mut c), (j, k, l)| {
a.push(j);
b.push(k);
(a, b)
c.push(l);
(a, b, c)
});
let b = ScalarEvents { tss: x, values: y };
let b = ScalarEvents { tss, pulses, values };
let b = Ok(StreamItem::DataItem(RangeCompletableItem::Data(b)));
let ret = Box::new(b);
Ok(ret)
+3 -12
View File
@@ -42,10 +42,7 @@ pub struct PbFileReader {
fn parse_scalar_byte(m: &[u8], year: u32) -> Result<EventsItem, Error> {
let msg = crate::generated::EPICSEvent::ScalarByte::parse_from_bytes(m)
.map_err(|_| Error::with_msg(format!("can not parse pb-type {}", "ScalarByte")))?;
let mut t = ScalarEvents::<i8> {
tss: vec![],
values: vec![],
};
let mut t = ScalarEvents::<i8>::empty();
let yd = Utc.ymd(year as i32, 1, 1).and_hms(0, 0, 0);
let ts = yd.timestamp() as u64 * 1000000000 + msg.get_secondsintoyear() as u64 * 1000000000 + msg.get_nano() as u64;
let v = msg.get_val().first().map_or(0, |k| *k as i8);
@@ -58,10 +55,7 @@ macro_rules! scalar_parse {
($m:expr, $year:expr, $pbt:ident, $eit:ident, $evty:ident) => {{
let msg = crate::generated::EPICSEvent::$pbt::parse_from_bytes($m)
.map_err(|e| Error::with_msg(format!("can not parse pb-type {} {:?}", stringify!($pbt), e)))?;
let mut t = ScalarEvents::<$evty> {
tss: vec![],
values: vec![],
};
let mut t = ScalarEvents::<$evty>::empty();
let yd = Utc.ymd($year as i32, 1, 1).and_hms(0, 0, 0);
let ts =
yd.timestamp() as u64 * 1000000000 + msg.get_secondsintoyear() as u64 * 1000000000 + msg.get_nano() as u64;
@@ -77,10 +71,7 @@ macro_rules! wave_parse {
($m:expr, $year:expr, $pbt:ident, $eit:ident, $evty:ident) => {{
let msg = crate::generated::EPICSEvent::$pbt::parse_from_bytes($m)
.map_err(|_| Error::with_msg(format!("can not parse pb-type {}", stringify!($pbt))))?;
let mut t = WaveEvents::<$evty> {
tss: vec![],
vals: vec![],
};
let mut t = WaveEvents::<$evty>::empty();
let yd = Utc.ymd($year as i32, 1, 1).and_hms(0, 0, 0);
let ts =
yd.timestamp() as u64 * 1000000000 + msg.get_secondsintoyear() as u64 * 1000000000 + msg.get_nano() as u64;