Fix warnings

This commit is contained in:
Dominik Werder
2025-03-07 11:42:58 +01:00
parent 64d080774c
commit 47e93e4338
3 changed files with 59 additions and 43 deletions

View File

@@ -9,12 +9,10 @@ serde = { version = "1", features = ["derive"] }
serde_json = "1"
humantime-serde = "1.1"
chrono = { version = "0.4.26", features = ["serde"] }
bytes = "1.8"
bytes = "1.10"
byteorder = "1.4"
hex = "0.4.3"
nom = "7.1.3"
autoerr = "0.0.3"
daqbuf-err = { path = "../daqbuf-err" }
netpod = { path = "../daqbuf-netpod", package = "daqbuf-netpod" }
[patch.crates-io]
thiserror = { git = "https://github.com/dominikwerder/thiserror.git", branch = "cstm" }

View File

@@ -1,6 +1,5 @@
use crate::channelconfig::CompressionMethod;
use crate::nom;
use daqbuf_err as err;
use netpod::log::*;
use netpod::ScalarType;
use netpod::Shape;
@@ -132,7 +131,11 @@ pub struct Api1ChannelHeader {
byte_order: Api1ByteOrder,
#[serde(default)]
shape: Vec<u32>,
#[serde(default, skip_serializing_if = "Option::is_none", with = "serde_compression_method")]
#[serde(
default,
skip_serializing_if = "Option::is_none",
with = "serde_compression_method"
)]
compression: Option<CompressionMethod>,
}
@@ -201,7 +204,10 @@ mod serde_compression_method {
match v {
0 => Ok(None),
1 => Ok(Some(CompressionMethod::BitshuffleLZ4)),
_ => Err(de::Error::unknown_variant("compression variant index", &["0"])),
_ => Err(de::Error::unknown_variant(
"compression variant index",
&["0"],
)),
}
}
}
@@ -264,7 +270,12 @@ fn basic_header_ser_01() {
};
let js = serde_json::to_string(&h).unwrap();
let vals = serde_json::from_str::<serde_json::Value>(&js).unwrap();
let x = vals.as_object().unwrap().get("compression").unwrap().as_i64();
let x = vals
.as_object()
.unwrap()
.get("compression")
.unwrap()
.as_i64();
assert_eq!(x, Some(1))
}
@@ -284,14 +295,16 @@ fn basic_header_deser_01() {
#[test]
fn basic_header_deser_02() {
let js = r#"{ "name": "ch1", "type": "float64", "byteOrder": "LITTLE_ENDIAN", "compression": 0 }"#;
let js =
r#"{ "name": "ch1", "type": "float64", "byteOrder": "LITTLE_ENDIAN", "compression": 0 }"#;
let h: Api1ChannelHeader = serde_json::from_str(js).unwrap();
assert!(h.compression.is_none());
}
#[test]
fn basic_header_deser_03() {
let js = r#"{ "name": "ch1", "type": "float64", "byteOrder": "LITTLE_ENDIAN", "compression": 1 }"#;
let js =
r#"{ "name": "ch1", "type": "float64", "byteOrder": "LITTLE_ENDIAN", "compression": 1 }"#;
let h: Api1ChannelHeader = serde_json::from_str(js).unwrap();
assert!(h.compression.is_some());
assert_eq!(h.compression, Some(CompressionMethod::BitshuffleLZ4));
@@ -299,7 +312,8 @@ fn basic_header_deser_03() {
#[test]
fn basic_header_deser_04() {
let js = r#"{ "name": "ch1", "type": "float64", "byteOrder": "LITTLE_ENDIAN", "compression": 2 }"#;
let js =
r#"{ "name": "ch1", "type": "float64", "byteOrder": "LITTLE_ENDIAN", "compression": 2 }"#;
let res = serde_json::from_str::<Api1ChannelHeader>(js);
assert!(res.is_err());
}
@@ -354,7 +368,7 @@ pub enum Api1Frame {
Data(Data),
}
fn fail_on_input<'a, T, E>(inp: &'a [u8]) -> Nres<T, E>
fn fail_on_input<'a, T, E>(inp: &'a [u8]) -> Nres<'a, T, E>
where
E: ParseError<&'a [u8]>,
{
@@ -362,7 +376,7 @@ where
IResult::Err(Err::Failure(e))
}
fn header<'a, E>(inp: &'a [u8]) -> Nres<Header, E>
fn header<'a, E>(inp: &'a [u8]) -> Nres<'a, Header, E>
where
E: ParseError<&'a [u8]> + ContextError<&'a [u8]>,
{
@@ -380,12 +394,14 @@ where
}
}
fn data<'a, E>(inp: &'a [u8]) -> Nres<Data, E>
fn data<'a, E>(inp: &'a [u8]) -> Nres<'a, Data, E>
where
E: ParseError<&'a [u8]>,
{
if inp.len() < 16 {
IResult::Err(Err::Incomplete(Needed::Size(NonZeroUsize::new(16).unwrap())))
IResult::Err(Err::Incomplete(Needed::Size(
NonZeroUsize::new(16).unwrap(),
)))
} else {
let (inp, ts) = be_u64(inp)?;
let (inp, pulse) = be_u64(inp)?;
@@ -396,7 +412,7 @@ where
}
}
fn api1_frame_complete<'a, E>(inp: &'a [u8]) -> Nres<Api1Frame, E>
fn api1_frame_complete<'a, E>(inp: &'a [u8]) -> Nres<'a, Api1Frame, E>
where
E: ParseError<&'a [u8]> + ContextError<&'a [u8]>,
{
@@ -423,14 +439,17 @@ where
}
}
fn api1_frame<'a, E>(inp: &'a [u8]) -> Nres<Api1Frame, E>
fn api1_frame<'a, E>(inp: &'a [u8]) -> Nres<'a, Api1Frame, E>
where
E: ParseError<&'a [u8]> + ContextError<&'a [u8]>,
{
let inp_orig = inp;
let (inp, len) = be_u32(inp)?;
if len < 1 {
IResult::Err(Err::Failure(ParseError::from_error_kind(inp, ErrorKind::Fail)))
IResult::Err(Err::Failure(ParseError::from_error_kind(
inp,
ErrorKind::Fail,
)))
} else {
if inp.len() < len as usize + 4 {
let e = Err::Incomplete(Needed::Size(NonZeroUsize::new(len as _).unwrap()));
@@ -439,7 +458,10 @@ where
let (inp, payload) = nom::bytes::complete::take(len)(inp)?;
let (inp, len2) = be_u32(inp)?;
if len != len2 {
IResult::Err(Err::Failure(ParseError::from_error_kind(inp_orig, ErrorKind::Fail)))
IResult::Err(Err::Failure(ParseError::from_error_kind(
inp_orig,
ErrorKind::Fail,
)))
} else {
let (left, res) = api1_frame_complete(payload)?;
if left.len() != 0 {
@@ -452,7 +474,7 @@ where
}
}
pub fn api1_frames<'a, E>(inp: &'a [u8]) -> Nres<Vec<Api1Frame>, E>
pub fn api1_frames<'a, E>(inp: &'a [u8]) -> Nres<'a, Vec<Api1Frame>, E>
where
E: ParseError<&'a [u8]> + ContextError<&'a [u8]>,
{

View File

@@ -2,13 +2,10 @@ use daqbuf_err as err;
use err::*;
use netpod::log::*;
use netpod::range::evrange::NanoRange;
use netpod::timeunits::DAY;
use netpod::timeunits::MS;
use netpod::ByteOrder;
use netpod::DtNano;
use netpod::NodeConfigCached;
use netpod::ScalarType;
use netpod::SfDbChannel;
use netpod::Shape;
use netpod::TsNano;
use nom::bytes::complete::take;
@@ -21,21 +18,20 @@ use nom::Needed;
use serde::Deserialize;
use serde::Serialize;
use std::fmt;
use std::path::PathBuf;
use std::time::Duration;
use std::time::SystemTime;
#[derive(Debug, ThisError)]
#[cstm(name = "ConfigParse")]
pub enum ConfigParseError {
NotSupportedOnNode,
FileNotFound,
#[error("PermissionDenied({0:?})")]
PermissionDenied(PathBuf),
IO,
ParseError(String),
NotSupported,
}
autoerr::create_error_v1!(
name(ConfigParseError, "ConfigParse"),
enum variants {
NotSupportedOnNode,
FileNotFound,
PermissionDenied(String),
IO,
ParseError(String),
NotSupported,
},
);
impl<T: fmt::Debug> From<nom::Err<T>> for ConfigParseError {
fn from(k: nom::Err<T>) -> Self {
@@ -239,24 +235,24 @@ pub fn parse_entry(inp: &[u8]) -> NRes<Option<ConfigEntry>> {
pulse,
ks,
bs,
split_count: split_count,
split_count,
status,
bb,
modulo,
offset,
precision,
scalar_type,
is_compressed: is_compressed,
is_array: is_array,
is_shaped: is_shaped,
is_compressed,
is_array,
is_shaped,
byte_order,
compression_method: compression_method,
compression_method,
shape,
source_name: source_name,
source_name,
unit,
description,
optional_fields: optional_fields,
value_converter: value_converter,
optional_fields,
value_converter,
}),
))
}