From d9c1d028d1f70711493df2e394ea044fd79af46a Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Tue, 10 Oct 2023 17:43:31 -0700 Subject: [PATCH] =?utf8?q?server:=20SystemTime=20=E2=86=92=20u64=20of=20se?= =?utf8?q?conds=20since=20UNIX=5FEPOCH?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- server/src/main.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index bf4f4fc..96f35b2 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -17,7 +17,7 @@ use serde::Serialize; use std::collections::HashMap; use std::net::UdpSocket; -use std::time::{Duration, SystemTime}; +use std::time::{Duration, SystemTime, UNIX_EPOCH}; const MESSAGE_SIZE: usize = 12; const LOGFILENAME: &str = "log.csv"; @@ -32,19 +32,23 @@ struct MessageKey { #[derive(Debug)] struct Message { key: MessageKey, - t: SystemTime, + t: u64, } impl From<&[u8; MESSAGE_SIZE]> for Message { fn from(value: &[u8; MESSAGE_SIZE]) -> Self { let ago = u32::from_be_bytes(value[8..=11].try_into().expect("I can't count")); + let press_time = SystemTime::now() - Duration::new(ago.into(), 0); Self { key: MessageKey { epoch: u32::from_be_bytes(value[0..=3].try_into().expect("I can't count")), device: u16::from_be_bytes(value[4..=5].try_into().expect("I can't count")), seq: u16::from_be_bytes(value[6..=7].try_into().expect("I can't count")), }, - t: SystemTime::now() - Duration::new(ago.into(), 0), + t: press_time + .duration_since(UNIX_EPOCH) + .expect("Bad time?") + .as_secs(), } } } @@ -60,17 +64,17 @@ impl TryFrom<&[u8]> for Message { #[derive(Debug)] struct Range { - start: SystemTime, - end: SystemTime, + start: u64, + end: u64, } impl Range { - fn new(t: &SystemTime) -> Self { + fn new(t: &u64) -> Self { Self { start: *t, end: *t } } - fn contains(&self, t: &SystemTime) -> bool { + fn contains(&self, t: &u64) -> bool { t > &self.start && t < &self.end } - fn extend(&mut self, t: &SystemTime) { + fn extend(&mut self, t: &u64) { if t < &self.start { self.start = *t; } -- 2.44.1