Deliver enum data in a better formatted way
This commit is contained in:
@@ -103,6 +103,35 @@ fn map_events(x: Result<StreamItem<RangeCompletableItem<Box<dyn Events>>>, Error
|
||||
// Ok(StreamItem::Log(item))
|
||||
};
|
||||
}
|
||||
let mut k = evs;
|
||||
let evs = if let Some(j) = k.as_any_mut().downcast_mut::<items_2::channelevents::ChannelEvents>() {
|
||||
use items_0::AsAnyMut;
|
||||
match j {
|
||||
items_2::channelevents::ChannelEvents::Events(m) => {
|
||||
if let Some(g) = m
|
||||
.as_any_mut()
|
||||
.downcast_mut::<items_2::eventsdim0::EventsDim0<netpod::EnumVariant>>()
|
||||
{
|
||||
trace!("consider container EnumVariant");
|
||||
let mut out = items_2::eventsdim0enum::EventsDim0Enum::new();
|
||||
for (&ts, val) in g.tss.iter().zip(g.values.iter()) {
|
||||
out.push_back(ts, val.ix(), val.name_string());
|
||||
}
|
||||
Box::new(items_2::channelevents::ChannelEvents::Events(Box::new(out)))
|
||||
} else {
|
||||
trace!("consider container channel events other events {}", k.type_name());
|
||||
k
|
||||
}
|
||||
}
|
||||
items_2::channelevents::ChannelEvents::Status(_) => {
|
||||
trace!("consider container channel events status {}", k.type_name());
|
||||
k
|
||||
}
|
||||
}
|
||||
} else {
|
||||
trace!("consider container else {}", k.type_name());
|
||||
k
|
||||
};
|
||||
let buf = evs.to_cbor_vec_u8();
|
||||
let bytes = Bytes::from(buf);
|
||||
let item = CborBytes(bytes);
|
||||
|
||||
@@ -58,6 +58,35 @@ fn map_events(x: Result<StreamItem<RangeCompletableItem<Box<dyn Events>>>, Error
|
||||
Ok(x) => match x {
|
||||
StreamItem::DataItem(x) => match x {
|
||||
RangeCompletableItem::Data(evs) => {
|
||||
let mut k = evs;
|
||||
let evs = if let Some(j) = k.as_any_mut().downcast_mut::<items_2::channelevents::ChannelEvents>() {
|
||||
use items_0::AsAnyMut;
|
||||
match j {
|
||||
items_2::channelevents::ChannelEvents::Events(m) => {
|
||||
if let Some(g) = m
|
||||
.as_any_mut()
|
||||
.downcast_mut::<items_2::eventsdim0::EventsDim0<netpod::EnumVariant>>()
|
||||
{
|
||||
trace!("consider container EnumVariant");
|
||||
let mut out = items_2::eventsdim0enum::EventsDim0Enum::new();
|
||||
for (&ts, val) in g.tss.iter().zip(g.values.iter()) {
|
||||
out.push_back(ts, val.ix(), val.name_string());
|
||||
}
|
||||
Box::new(items_2::channelevents::ChannelEvents::Events(Box::new(out)))
|
||||
} else {
|
||||
trace!("consider container channel events other events {}", k.type_name());
|
||||
k
|
||||
}
|
||||
}
|
||||
items_2::channelevents::ChannelEvents::Status(_) => {
|
||||
trace!("consider container channel events status {}", k.type_name());
|
||||
k
|
||||
}
|
||||
}
|
||||
} else {
|
||||
trace!("consider container else {}", k.type_name());
|
||||
k
|
||||
};
|
||||
let s = evs.to_json_string();
|
||||
let item = JsonBytes::new(s);
|
||||
Ok(item)
|
||||
|
||||
@@ -13,9 +13,11 @@ use items_0::on_sitemty_data;
|
||||
use netpod::log::*;
|
||||
use netpod::ChannelTypeConfigGen;
|
||||
use netpod::Cluster;
|
||||
use netpod::HasTimeout;
|
||||
use netpod::ReqCtx;
|
||||
use query::api4::events::PlainEventsQuery;
|
||||
use serde_json::Value as JsonValue;
|
||||
use std::time::Duration;
|
||||
use std::time::Instant;
|
||||
|
||||
#[derive(Debug, ThisError)]
|
||||
@@ -34,7 +36,7 @@ pub async fn plain_events_json(
|
||||
open_bytes: OpenBoxedBytesStreamsBox,
|
||||
) -> Result<JsonValue, Error> {
|
||||
debug!("plain_events_json evquery {:?}", evq);
|
||||
let deadline = Instant::now() + evq.timeout();
|
||||
let deadline = Instant::now() + evq.timeout().unwrap_or(Duration::from_millis(4000));
|
||||
|
||||
let stream = dyn_events_stream(evq, ch_conf, ctx, open_bytes).await?;
|
||||
|
||||
@@ -49,7 +51,7 @@ pub async fn plain_events_json(
|
||||
.downcast_mut::<items_2::eventsdim0::EventsDim0<netpod::EnumVariant>>()
|
||||
{
|
||||
trace!("consider container EnumVariant");
|
||||
let mut out = items_2::eventsdim0::EventsDim0Enum::new();
|
||||
let mut out = items_2::eventsdim0enum::EventsDim0Enum::new();
|
||||
for (&ts, val) in g.tss.iter().zip(g.values.iter()) {
|
||||
out.push_back(ts, val.ix(), val.name_string());
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ use netpod::ReqCtx;
|
||||
use query::api4::binned::BinnedQuery;
|
||||
use serde_json::Value as JsonValue;
|
||||
use std::pin::Pin;
|
||||
use std::time::Duration;
|
||||
use std::time::Instant;
|
||||
|
||||
#[allow(unused)]
|
||||
@@ -78,7 +79,7 @@ async fn timebinnable_stream(
|
||||
})
|
||||
});
|
||||
|
||||
#[cfg(DISABLED)]
|
||||
#[cfg(target_abi = "")]
|
||||
#[cfg(wasm_transform)]
|
||||
let stream = if let Some(wasmname) = wasm1 {
|
||||
debug!("make wasm transform");
|
||||
@@ -257,7 +258,7 @@ pub async fn timebinned_json(
|
||||
ctx: &ReqCtx,
|
||||
open_bytes: OpenBoxedBytesStreamsBox,
|
||||
) -> Result<JsonValue, Error> {
|
||||
let deadline = Instant::now().checked_add(query.timeout_value()).unwrap();
|
||||
let deadline = Instant::now() + query.timeout_content().unwrap_or(Duration::from_millis(5000));
|
||||
let binned_range = BinnedRangeEnum::covering_range(query.range().clone(), query.bin_count())?;
|
||||
// TODO derive better values, from query
|
||||
let collect_max = 10000;
|
||||
|
||||
Reference in New Issue
Block a user