diff --git a/daemon/src/diag.rs b/daemon/src/diag.rs index 1340a36..6a2f40d 100644 --- a/daemon/src/diag.rs +++ b/daemon/src/diag.rs @@ -102,6 +102,7 @@ fn check_disk_space(path: &std::path::Path, warning_mb: u64, critical_mb: u64) - } impl DiagTask { + #[allow(clippy::too_many_arguments)] fn new( ui_update_sender: Sender, analysis_sender: Sender, diff --git a/daemon/src/notifications.rs b/daemon/src/notifications.rs index d8c521e..da21e7d 100644 --- a/daemon/src/notifications.rs +++ b/daemon/src/notifications.rs @@ -290,7 +290,7 @@ mod tests { println!("error = {:?}", reqwest_error); assert!(reqwest_error.is_timeout()); } - _ => assert!(false), + _ => unreachable!(), } } diff --git a/daemon/src/pcap.rs b/daemon/src/pcap.rs index eb93a8d..8cbf388 100644 --- a/daemon/src/pcap.rs +++ b/daemon/src/pcap.rs @@ -123,6 +123,45 @@ fn find_nearest_gps(records: &[GpsRecord], packet_unix_ts: i64) -> Option( + writer: W, + qmdl_file: R, + qmdl_size_bytes: usize, + gps_records: Vec, +) -> Result<(), Error> +where + W: AsyncWrite + Unpin + Send, + R: AsyncRead + Unpin, +{ + let mut pcap_writer = GsmtapPcapWriter::new(writer).await?; + pcap_writer.write_iface_header().await?; + + let mut reader = QmdlReader::new(qmdl_file, Some(qmdl_size_bytes)); + while let Some(container) = reader.get_next_messages_container().await? { + if container.data_type != DataType::UserSpace { + continue; + } + + for maybe_msg in container.into_messages() { + match maybe_msg { + Ok(msg) => { + let maybe_gsmtap_msg = gsmtap_parser::parse(msg)?; + if let Some((timestamp, gsmtap_msg)) = maybe_gsmtap_msg { + let packet_unix_ts = timestamp.to_datetime().timestamp(); + let gps = find_nearest_gps(&gps_records, packet_unix_ts); + pcap_writer + .write_gsmtap_message(gsmtap_msg, timestamp, gps.as_ref()) + .await?; + } + } + Err(e) => error!("error parsing message: {e:?}"), + } + } + } + + Ok(()) +} + #[cfg(test)] mod tests { use super::*; @@ -182,42 +221,3 @@ mod tests { assert_eq!(find_nearest_gps(&records, 150).unwrap().unix_ts, 100); } } - -pub async fn generate_pcap_data( - writer: W, - qmdl_file: R, - qmdl_size_bytes: usize, - gps_records: Vec, -) -> Result<(), Error> -where - W: AsyncWrite + Unpin + Send, - R: AsyncRead + Unpin, -{ - let mut pcap_writer = GsmtapPcapWriter::new(writer).await?; - pcap_writer.write_iface_header().await?; - - let mut reader = QmdlReader::new(qmdl_file, Some(qmdl_size_bytes)); - while let Some(container) = reader.get_next_messages_container().await? { - if container.data_type != DataType::UserSpace { - continue; - } - - for maybe_msg in container.into_messages() { - match maybe_msg { - Ok(msg) => { - let maybe_gsmtap_msg = gsmtap_parser::parse(msg)?; - if let Some((timestamp, gsmtap_msg)) = maybe_gsmtap_msg { - let packet_unix_ts = timestamp.to_datetime().timestamp(); - let gps = find_nearest_gps(&gps_records, packet_unix_ts); - pcap_writer - .write_gsmtap_message(gsmtap_msg, timestamp, gps.as_ref()) - .await?; - } - } - Err(e) => error!("error parsing message: {e:?}"), - } - } - } - - Ok(()) -}