Deliver float events from scylla table
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user