diff --git a/webrtc/src/stats/serialize.rs b/webrtc/src/stats/serialize.rs index b1abd394b..019709314 100644 --- a/webrtc/src/stats/serialize.rs +++ b/webrtc/src/stats/serialize.rs @@ -20,31 +20,26 @@ pub mod instant_to_epoch_seconds { .duration_since(UNIX_EPOCH) .expect("Time went backwards"); - let epoch_ms = epoch.as_millis() as f64 / 1000.0; + let epoch_s = epoch.as_millis() as f64 / 1000.0; - epoch_ms.serialize(serializer) + epoch_s.serialize(serializer) } pub fn deserialize<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, { - let epoch_seconds: f64 = Deserialize::deserialize(deserializer)?; - - let since_epoch = Duration::from_secs_f64(epoch_seconds); + let epoch_s = f64::deserialize(deserializer)?; + let epoch_duration = Duration::from_secs_f64(epoch_s); let system_now = SystemTime::now(); let instant_now = Instant::now(); - let deserialized_system_time = UNIX_EPOCH + since_epoch; - - let adjustment = match deserialized_system_time.duration_since(system_now) { - Ok(duration) => -duration.as_secs_f64(), - Err(e) => e.duration().as_secs_f64(), - }; - - let adjusted_instant = instant_now + Duration::from_secs_f64(adjustment); + let duration_since_approx = system_now + .duration_since(UNIX_EPOCH + epoch_duration) + .expect("Time went backwards"); + let instant = instant_now - duration_since_approx; - Ok(adjusted_instant) + Ok(instant) } }