From 2fda1576896d2f27279d375c907d8923085397ff Mon Sep 17 00:00:00 2001 From: Dominik Werder Date: Sat, 7 Dec 2024 17:50:37 +0100 Subject: [PATCH] Introduce autoerr --- netfetch/src/ca/conn.rs | 3 +-- serieswriter/Cargo.toml | 2 +- serieswriter/src/binwriter.rs | 23 ++++++++++----------- serieswriter/src/binwritergrid.rs | 19 +++++++++--------- serieswriter/src/lib.rs | 4 ++++ serieswriter/src/ratelimitwriter.rs | 14 ++++++------- serieswriter/src/rtwriter.rs | 20 +++++++++---------- serieswriter/src/writer.rs | 31 ++++++++++++++--------------- 8 files changed, 56 insertions(+), 60 deletions(-) diff --git a/netfetch/src/ca/conn.rs b/netfetch/src/ca/conn.rs index 1e70911..bfd0a5c 100644 --- a/netfetch/src/ca/conn.rs +++ b/netfetch/src/ca/conn.rs @@ -1414,8 +1414,7 @@ impl CaConn { // TODO refactor, should only execute this when required: let conf_poll_conf = conf.poll_conf(); if let ChannelState::MakingSeriesWriter(st2) = &mut conf.state { - let dt = stnow.duration_since(SystemTime::UNIX_EPOCH).unwrap(); - let beg = TsNano::from_ns(SEC * dt.as_secs() + dt.subsec_nanos() as u64); + let beg = TsNano::from_system_time(stnow); let binwriter = BinWriter::new( beg, conf.conf.min_quiets(), diff --git a/serieswriter/Cargo.toml b/serieswriter/Cargo.toml index b998f9e..7840a7d 100644 --- a/serieswriter/Cargo.toml +++ b/serieswriter/Cargo.toml @@ -9,8 +9,8 @@ serde = { version = "1.0", features = ["derive"] } async-channel = "2.1.1" futures-util = "0.3.30" smallvec = "1.13.2" +autoerr = "0.0.3" log = { path = "../log" } -err = { path = "../../daqbuf-err", package = "daqbuf-err" } netpod = { path = "../../daqbuf-netpod", package = "daqbuf-netpod" } items_0 = { path = "../../daqbuf-items-0", package = "daqbuf-items-0" } items_2 = { path = "../../daqbuf-items-2", package = "daqbuf-items-2" } diff --git a/serieswriter/src/binwriter.rs b/serieswriter/src/binwriter.rs index efe69b6..480957e 100644 --- a/serieswriter/src/binwriter.rs +++ b/serieswriter/src/binwriter.rs @@ -1,9 +1,7 @@ use crate::binwritergrid::BinWriterGrid; +use crate::log::*; use crate::rtwriter::MinQuiets; -use err::thiserror; -use err::ThisError; use items_2::binning::container_events::ContainerEvents; -use netpod::log::*; use netpod::ttl::RetentionTime; use netpod::DtMs; use netpod::ScalarType; @@ -19,15 +17,16 @@ macro_rules! trace_ingest { ($($arg:tt)*) => ( if false { trace!($($arg)*); } ) macro_rules! trace_tick { ($($arg:tt)*) => ( if false { trace!($($arg)*); } ) } macro_rules! trace_tick_verbose { ($($arg:tt)*) => ( if false { trace!($($arg)*); } ) } -#[derive(Debug, ThisError)] -#[cstm(name = "SerieswriterBinwriter")] -pub enum Error { - SeriesLookupError, - SeriesWriter(#[from] crate::writer::Error), - Binning(#[from] items_2::binning::timeweight::timeweight_events::Error), - UnsupportedBinGrid(DtMs), - BinWriterGrid(#[from] crate::binwritergrid::Error), -} +autoerr::create_error_v1!( + name(Error, "SerieswriterBinwriter"), + enum variants { + SeriesLookupError, + SeriesWriter(#[from] crate::writer::Error), + Binning(#[from] items_2::binning::timeweight::timeweight_events::Error), + UnsupportedBinGrid(DtMs), + BinWriterGrid(#[from] crate::binwritergrid::Error), + }, +); #[derive(Debug)] pub struct BinWriter { diff --git a/serieswriter/src/binwritergrid.rs b/serieswriter/src/binwritergrid.rs index 179def3..6ae219b 100644 --- a/serieswriter/src/binwritergrid.rs +++ b/serieswriter/src/binwritergrid.rs @@ -1,5 +1,3 @@ -use err::thiserror; -use err::ThisError; use items_2::binning::container_bins::ContainerBins; use items_2::binning::container_events::ContainerEvents; use items_2::binning::timeweight::timeweight_events::BinnedEventsTimeweight; @@ -21,14 +19,15 @@ macro_rules! trace_ingest { ($($arg:tt)*) => ( if false { trace!($($arg)*); } ) macro_rules! trace_tick { ($($arg:tt)*) => ( if false { trace!($($arg)*); } ) } macro_rules! trace_tick_verbose { ($($arg:tt)*) => ( if false { trace!($($arg)*); } ) } -#[derive(Debug, ThisError)] -#[cstm(name = "SerieswriterBinwriterGrid")] -pub enum Error { - SeriesLookupError, - SeriesWriter(#[from] crate::writer::Error), - Binning(#[from] items_2::binning::timeweight::timeweight_events::Error), - UnsupportedBinGrid(DtMs), -} +autoerr::create_error_v1!( + name(Error, "SerieswriterBinwriterGrid"), + enum variants { + SeriesLookupError, + SeriesWriter(#[from] crate::writer::Error), + Binning(#[from] items_2::binning::timeweight::timeweight_events::Error), + UnsupportedBinGrid(DtMs), + }, +); #[derive(Debug)] pub struct BinWriterGrid { diff --git a/serieswriter/src/lib.rs b/serieswriter/src/lib.rs index 9367713..41862e2 100644 --- a/serieswriter/src/lib.rs +++ b/serieswriter/src/lib.rs @@ -6,3 +6,7 @@ pub mod msptool; pub mod ratelimitwriter; pub mod rtwriter; pub mod writer; + +mod log { + pub use log::*; +} diff --git a/serieswriter/src/ratelimitwriter.rs b/serieswriter/src/ratelimitwriter.rs index 7c16c4c..c7669a9 100644 --- a/serieswriter/src/ratelimitwriter.rs +++ b/serieswriter/src/ratelimitwriter.rs @@ -1,8 +1,6 @@ use crate::writer::EmittableType; use crate::writer::SeriesWriter; use core::fmt; -use err::thiserror; -use err::ThisError; use netpod::log::*; use netpod::DtNano; use netpod::TsNano; @@ -13,7 +11,6 @@ use std::marker::PhantomData; use std::time::Duration; use std::time::Instant; -#[allow(unused)] macro_rules! trace_rt_decision { ($det:expr, $($arg:tt)*) => { if $det { @@ -22,11 +19,12 @@ macro_rules! trace_rt_decision { }; } -#[derive(Debug, ThisError)] -#[cstm(name = "RateLimitWriter")] -pub enum Error { - SeriesWriter(#[from] crate::writer::Error), -} +autoerr::create_error_v1!( + name(Error, "RateLimitWriter"), + enum variants { + SeriesWriter(#[from] crate::writer::Error), + }, +); #[derive(Debug)] pub struct WriteRes { diff --git a/serieswriter/src/rtwriter.rs b/serieswriter/src/rtwriter.rs index 321a6ec..11b2b6c 100644 --- a/serieswriter/src/rtwriter.rs +++ b/serieswriter/src/rtwriter.rs @@ -1,8 +1,6 @@ +use crate::log::*; use crate::ratelimitwriter::RateLimitWriter; use crate::writer::EmittableType; -use err::thiserror; -use err::ThisError; -use netpod::log::*; use netpod::ScalarType; use netpod::Shape; use netpod::TsNano; @@ -13,7 +11,6 @@ use std::collections::VecDeque; use std::time::Duration; use std::time::Instant; -#[allow(unused)] macro_rules! trace_emit { ($det:expr, $($arg:tt)*) => { if $det { @@ -22,13 +19,14 @@ macro_rules! trace_emit { }; } -#[derive(Debug, ThisError)] -#[cstm(name = "SerieswriterRtwriter")] -pub enum Error { - SeriesLookupError, - SeriesWriter(#[from] crate::writer::Error), - RateLimitWriter(#[from] crate::ratelimitwriter::Error), -} +autoerr::create_error_v1!( + name(Error, "SerieswriterRtwriter"), + enum variants { + SeriesLookupError, + SeriesWriter(#[from] crate::writer::Error), + RateLimitWriter(#[from] crate::ratelimitwriter::Error), + }, +); #[derive(Debug, Clone)] pub struct MinQuiets { diff --git a/serieswriter/src/writer.rs b/serieswriter/src/writer.rs index 41f312a..b254f68 100644 --- a/serieswriter/src/writer.rs +++ b/serieswriter/src/writer.rs @@ -1,6 +1,4 @@ use core::fmt; -use err::thiserror; -use err::ThisError; use log::*; use netpod::TsNano; use scywr::iteminsertqueue::QueryItem; @@ -12,6 +10,21 @@ use std::time::Instant; macro_rules! trace_emit { ($det:expr, $($arg:tt)*) => ( if $det { trace!($($arg)*); } ) } +autoerr::create_error_v1!( + name(Error, "SerieswriterWriter"), + enum variants { + DbPgSid(#[from] dbpg::seriesid::Error), + ChannelSendError, + ChannelRecvError, + SeriesLookupError, + Db(#[from] dbpg::err::Error), + DbSchema(#[from] dbpg::schema::Error), + Scy(#[from] scywr::session::Error), + ScySchema(#[from] scywr::schema::Error), + Series(#[from] dbpg::seriesbychannel::Error), + }, +); + #[derive(Debug)] pub struct EmitRes { pub items: SmallVec<[QueryItem; 4]>, @@ -27,20 +40,6 @@ pub trait EmittableType: fmt::Debug + Clone { fn into_query_item(self, ts_net: Instant, tsev: TsNano, state: &mut ::State) -> EmitRes; } -#[derive(Debug, ThisError)] -#[cstm(name = "SerieswriterWriter")] -pub enum Error { - DbPgSid(#[from] dbpg::seriesid::Error), - ChannelSendError, - ChannelRecvError, - SeriesLookupError, - Db(#[from] dbpg::err::Error), - DbSchema(#[from] dbpg::schema::Error), - Scy(#[from] scywr::session::Error), - ScySchema(#[from] scywr::schema::Error), - Series(#[from] dbpg::seriesbychannel::Error), -} - impl From> for Error { fn from(_value: async_channel::SendError) -> Self { Error::ChannelSendError