diff --git a/src/collect.rs b/src/collect.rs index b444f7b..b392041 100644 --- a/src/collect.rs +++ b/src/collect.rs @@ -21,12 +21,13 @@ use std::task::Context; use std::task::Poll; use std::time::Instant; -#[derive(Debug, thiserror::Error)] -#[cstm(name = "CollectDyn")] -pub enum Error { - Msg(String), - NoResultNoCollector, -} +autoerr::create_error_v1!( + name(Error, "CollectDyn"), + enum variants { + Msg(String), + NoResultNoCollector, + }, +); struct ErrMsg(E) where @@ -46,6 +47,7 @@ pub enum CollectResult where T: fmt::Debug, { + Empty, Timeout, Some(T), } @@ -203,7 +205,7 @@ where } None => { debug!("no result because no collector was created"); - Ready(Ok(CollectResult::Timeout)) + Ready(Ok(CollectResult::Empty)) } } } else { diff --git a/src/plaineventsjson.rs b/src/plaineventsjson.rs index 0750002..b028ed5 100644 --- a/src/plaineventsjson.rs +++ b/src/plaineventsjson.rs @@ -22,13 +22,14 @@ use serde_json::Value as JsonValue; use std::time::Duration; use std::time::Instant; -#[derive(Debug, thiserror::Error)] -#[cstm(name = "PlainEventsJson")] -pub enum Error { - Stream(#[from] crate::plaineventsstream::Error), - Json(#[from] serde_json::Error), - Collect(#[from] crate::collect::Error), -} +autoerr::create_error_v1!( + name(Error, "PlainEventsJson"), + enum variants { + Stream(#[from] crate::plaineventsstream::Error), + Json(#[from] serde_json::Error), + Collect(#[from] crate::collect::Error), + }, +); pub async fn plain_events_json( evq: &PlainEventsQuery, @@ -57,15 +58,22 @@ pub async fn plain_events_json( ) .await?; warn!("plain_events_json collected {:?}", collected); - if let CollectResult::Some(x) = collected { - let x = x.into_user_facing_api_type_box(); - let val = x.into_serializable_json(); - let jsval = serde_json::to_string(&val)?; - debug!("plain_events_json json serialized"); - Ok(CollectResult::Some(JsonBytes::new(jsval))) - } else { - debug!("plain_events_json timeout"); - Ok(CollectResult::Timeout) + match collected { + CollectResult::Some(x) => { + let x = x.into_user_facing_api_type_box(); + let val = x.into_serializable_json(); + let jsval = serde_json::to_string(&val)?; + debug!("plain_events_json json serialized"); + Ok(CollectResult::Some(JsonBytes::new(jsval))) + } + CollectResult::Empty => { + debug!("plain_events_json empty"); + Ok(CollectResult::Empty) + } + CollectResult::Timeout => { + debug!("plain_events_json timeout"); + Ok(CollectResult::Timeout) + } } } diff --git a/src/timebinnedjson.rs b/src/timebinnedjson.rs index ef10846..73a7449 100644 --- a/src/timebinnedjson.rs +++ b/src/timebinnedjson.rs @@ -342,12 +342,12 @@ pub async fn timebinned_json( let collected: BoxFuture<_> = Box::pin(collected); let collres = collected.await?; match collres { - CollectResult::Some(collres) => { - let x = collres.into_user_facing_api_type_box(); - let val = x.into_serializable_json(); + CollectResult::Some(res) => { + let val = res.into_user_facing_api_type_box().into_serializable_json(); let jsval = serde_json::to_string(&val)?; Ok(CollectResult::Some(JsonBytes::new(jsval))) } + CollectResult::Empty => Ok(CollectResult::Empty), CollectResult::Timeout => Ok(CollectResult::Timeout), } }