Skip to content

Commit 903e110

Browse files
committed
new merge conflict addressed, to_datetime unused code removed, some refactoring to appease tests
1 parent e8fbe3b commit 903e110

5 files changed

Lines changed: 43 additions & 61 deletions

File tree

daemon/src/diag.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -163,21 +163,18 @@ impl DiagTask {
163163
// For fixed-mode sessions, write the configured coordinates to the sidecar
164164
// immediately so the per-session GPS is stored durably and isn't affected
165165
// by future config changes or GPS API calls.
166-
if self.gps_mode == GpsMode::Fixed {
167-
if let Some((lat, lon)) = self.gps_fixed_coords {
168-
if let Some((entry_idx, _)) = qmdl_store.get_current_entry() {
169-
if let Ok(mut gps_file) = qmdl_store.open_entry_gps_for_append(entry_idx).await
170-
{
171-
let record = GpsRecord {
172-
unix_ts: 0,
173-
lat,
174-
lon,
175-
};
176-
if let Ok(json) = serde_json::to_string(&record) {
177-
let _ = gps_file.write_all(format!("{json}\n").as_bytes()).await;
178-
}
179-
}
180-
}
166+
if self.gps_mode == GpsMode::Fixed
167+
&& let Some((lat, lon)) = self.gps_fixed_coords
168+
&& let Some((entry_idx, _)) = qmdl_store.get_current_entry()
169+
&& let Ok(mut gps_file) = qmdl_store.open_entry_gps_for_append(entry_idx).await
170+
{
171+
let record = GpsRecord {
172+
unix_ts: 0,
173+
lat,
174+
lon,
175+
};
176+
if let Ok(json) = serde_json::to_string(&record) {
177+
let _ = gps_file.write_all(format!("{json}\n").as_bytes()).await;
181178
}
182179
}
183180
self.stop_current_recording().await;

daemon/src/gps.rs

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use axum::Json;
22
use axum::extract::State;
33
use axum::http::StatusCode;
4-
use chrono::{DateTime, FixedOffset, Utc};
4+
use chrono::Utc;
55
use log::error;
66
use serde::{Deserialize, Deserializer, Serialize};
77
use std::sync::Arc;
@@ -40,29 +40,13 @@ pub struct GpsData {
4040
pub timestamp: i64,
4141
}
4242

43-
impl GpsData {
44-
pub fn to_datetime(&self) -> DateTime<FixedOffset> {
45-
DateTime::from_timestamp(self.timestamp, 0)
46-
.unwrap_or_default()
47-
.fixed_offset()
48-
}
49-
}
50-
5143
#[derive(Serialize, Deserialize)]
5244
pub struct GpsRecord {
5345
pub unix_ts: i64,
5446
pub lat: f64,
5547
pub lon: f64,
5648
}
5749

58-
impl GpsRecord {
59-
pub fn to_datetime(&self) -> DateTime<FixedOffset> {
60-
DateTime::from_timestamp(self.unix_ts, 0)
61-
.unwrap_or_default()
62-
.fixed_offset()
63-
}
64-
}
65-
6650
/// Reads all GPS records from a sidecar NDJSON file, skipping malformed lines.
6751
pub async fn load_gps_records(file: tokio::fs::File) -> Vec<GpsRecord> {
6852
let reader = BufReader::new(file);
@@ -91,21 +75,21 @@ pub async fn post_gps(
9175
drop(gps);
9276

9377
let qmdl_store = state.qmdl_store_lock.read().await;
94-
if let Some((entry_idx, _)) = qmdl_store.get_current_entry() {
95-
if let Ok(mut file) = qmdl_store.open_entry_gps_for_append(entry_idx).await {
96-
let record = GpsRecord {
97-
unix_ts: Utc::now().timestamp(),
98-
lat: gps_data.latitude,
99-
lon: gps_data.longitude,
100-
};
101-
match serde_json::to_string(&record) {
102-
Ok(json) => {
103-
if let Err(e) = file.write_all(format!("{json}\n").as_bytes()).await {
104-
error!("failed to write GPS record to sidecar: {e}");
105-
}
78+
if let Some((entry_idx, _)) = qmdl_store.get_current_entry()
79+
&& let Ok(mut file) = qmdl_store.open_entry_gps_for_append(entry_idx).await
80+
{
81+
let record = GpsRecord {
82+
unix_ts: Utc::now().timestamp(),
83+
lat: gps_data.latitude,
84+
lon: gps_data.longitude,
85+
};
86+
match serde_json::to_string(&record) {
87+
Ok(json) => {
88+
if let Err(e) = file.write_all(format!("{json}\n").as_bytes()).await {
89+
error!("failed to write GPS record to sidecar: {e}");
10690
}
107-
Err(e) => error!("failed to serialize GPS record: {e}"),
10891
}
92+
Err(e) => error!("failed to serialize GPS record: {e}"),
10993
}
11094
}
11195

daemon/src/pcap.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,17 @@ pub(crate) async fn load_gps_records_for_entry(
9696
// not the current config, so old fixed-mode sessions still get coordinates even
9797
// if the mode has since been changed. Use the configured fixed coords directly
9898
// rather than gps_state, which can be overwritten by API calls or be None.
99-
if entry_gps_mode == Some(GpsMode::Fixed) {
100-
if let (Some(lat), Some(lon)) = (
99+
if entry_gps_mode == Some(GpsMode::Fixed)
100+
&& let (Some(lat), Some(lon)) = (
101101
state.config.gps_fixed_latitude,
102102
state.config.gps_fixed_longitude,
103-
) {
104-
return vec![GpsRecord {
105-
unix_ts: 0,
106-
lat,
107-
lon,
108-
}];
109-
}
103+
)
104+
{
105+
return vec![GpsRecord {
106+
unix_ts: 0,
107+
lat,
108+
lon,
109+
}];
110110
}
111111
vec![]
112112
}

daemon/src/qmdl_store.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ mod tests {
513513
async fn test_creating_updating_and_closing_entries() {
514514
let dir = make_temp_dir();
515515
let mut store = RecordingStore::create(dir.path()).await.unwrap();
516-
let _ = store.new_entry(0).await.unwrap();
516+
let _ = store.new_entry(GpsMode::Disabled).await.unwrap();
517517
let entry_index = store.current_entry.unwrap();
518518
assert_eq!(
519519
RecordingStore::read_manifest(dir.path()).await.unwrap(),
@@ -550,7 +550,7 @@ mod tests {
550550
async fn test_create_on_existing_store() {
551551
let dir = make_temp_dir();
552552
let mut store = RecordingStore::create(dir.path()).await.unwrap();
553-
let _ = store.new_entry(0).await.unwrap();
553+
let _ = store.new_entry(GpsMode::Disabled).await.unwrap();
554554
let entry_index = store.current_entry.unwrap();
555555
store
556556
.update_entry_qmdl_size(entry_index, 1000)
@@ -564,9 +564,9 @@ mod tests {
564564
async fn test_repeated_new_entries() {
565565
let dir = make_temp_dir();
566566
let mut store = RecordingStore::create(dir.path()).await.unwrap();
567-
let _ = store.new_entry(0).await.unwrap();
567+
let _ = store.new_entry(GpsMode::Disabled).await.unwrap();
568568
let entry_index = store.current_entry.unwrap();
569-
let _ = store.new_entry(0).await.unwrap();
569+
let _ = store.new_entry(GpsMode::Disabled).await.unwrap();
570570
let new_entry_index = store.current_entry.unwrap();
571571
assert_ne!(entry_index, new_entry_index);
572572
assert_eq!(store.manifest.entries.len(), 2);
@@ -576,7 +576,7 @@ mod tests {
576576
async fn test_delete_all_entries() {
577577
let dir = make_temp_dir();
578578
let mut store = RecordingStore::create(dir.path()).await.unwrap();
579-
let _ = store.new_entry(0).await.unwrap();
579+
let _ = store.new_entry(GpsMode::Disabled).await.unwrap();
580580
assert!(store.current_entry.is_some());
581581

582582
store.delete_all_entries().await.unwrap();

daemon/src/server.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ use crate::analysis::{AnalysisCtrlMessage, AnalysisStatus};
2525
use crate::config::Config;
2626
use crate::diag::DiagDeviceCtrlMessage;
2727
use crate::display::DisplayState;
28-
use crate::notifications::DEFAULT_NOTIFICATION_TIMEOUT;
2928
use crate::gps::GpsData;
29+
use crate::notifications::DEFAULT_NOTIFICATION_TIMEOUT;
3030
use crate::pcap::{generate_pcap_data, load_gps_records_for_entry};
3131
use crate::qmdl_store::RecordingStore;
3232

@@ -449,6 +449,7 @@ pub async fn debug_set_display_state(
449449
#[cfg(test)]
450450
mod tests {
451451
use super::*;
452+
use crate::config::GpsMode;
452453
use async_zip::base::read::mem::ZipFileReader;
453454
use axum::extract::{Path, State};
454455
use tempfile::TempDir;
@@ -468,7 +469,7 @@ mod tests {
468469
) -> String {
469470
let entry_name = {
470471
let mut store = store_lock.write().await;
471-
let (mut qmdl_file, _analysis_file) = store.new_entry(0).await.unwrap();
472+
let (mut qmdl_file, _analysis_file) = store.new_entry(GpsMode::Disabled).await.unwrap();
472473

473474
if !test_data.is_empty() {
474475
use tokio::io::AsyncWriteExt;

0 commit comments

Comments
 (0)