refactor(ratecontrol): Use custom Time for logging

This commit is contained in:
Nils Andreas Svee committed 2026-02-22 12:13:13 +07:00
1 parent 0990332f18
commit f2113fa11c
1 file changed
+16 -26
+16 -26
View File
@@ -1,6 +1,8 @@
use crate::netlink::{Netlink, NetlinkError, Qdisc}; use crate::netlink::{Netlink, NetlinkError, Qdisc};
use crate::time::Time;
use crate::{Config, ReflectorStats}; use crate::{Config, ReflectorStats};
use log::{debug, info, warn}; use log::{debug, info, warn};
use rustix::thread::ClockId;
use std::collections::HashMap; use std::collections::HashMap;
use std::fs::File; use std::fs::File;
use std::io::Write; use std::io::Write;
@@ -8,12 +10,8 @@ use std::net::IpAddr;
use std::sync::mpsc::Sender; use std::sync::mpsc::Sender;
use std::sync::{Arc, Mutex, RwLock}; use std::sync::{Arc, Mutex, RwLock};
use std::thread::sleep; use std::thread::sleep;
use std::time::{Duration, Instant, SystemTime}; use std::time::{Duration, Instant};
use thiserror::Error; use thiserror::Error;
use time::OffsetDateTime;
use time::format_description::FormatItem;
use time::formatting::Formattable;
use time::macros::format_description;
#[derive(Copy, Clone, Debug, PartialEq)] #[derive(Copy, Clone, Debug, PartialEq)]
enum Direction { enum Direction {
@@ -33,18 +31,6 @@ pub enum StatsDirection {
TX, TX,
} }
const DUMP_DATETIME_FORMAT: &[FormatItem] = format_description!(
"[year]-[month]-[day] [hour]:[minute]:[second] [offset_hour \
sign:mandatory]:[offset_minute]:[offset_second]"
);
fn time_format<T>(dt: T, format: &(impl Formattable + ?Sized)) -> String
where
T: Into<OffsetDateTime>,
{
dt.into().format(format).unwrap()
}
fn generate_initial_speeds(base_speed: f64, size: u32) -> Vec<f64> { fn generate_initial_speeds(base_speed: f64, size: u32) -> Vec<f64> {
let mut rates = Vec::new(); let mut rates = Vec::new();
@@ -369,28 +355,31 @@ impl Ratecontroller {
self.state_dl.current_rate = self.state_dl.next_rate; self.state_dl.current_rate = self.state_dl.next_rate;
self.state_ul.current_rate = self.state_ul.next_rate; self.state_ul.current_rate = self.state_ul.next_rate;
let stats_time = Time::new(ClockId::Realtime);
debug!( debug!(
"{},{},{},{},{},{},{}", "{},{},{},{},{},{},{},{}",
time_format(SystemTime::now(), DUMP_DATETIME_FORMAT), stats_time.secs(),
stats_time.nsecs(),
self.state_dl.load, self.state_dl.load,
self.state_ul.load, self.state_ul.load,
self.state_dl.delta_stat, self.state_dl.delta_stat,
self.state_ul.delta_stat, self.state_ul.delta_stat,
self.state_dl.current_rate, self.state_dl.current_rate as u64,
self.state_ul.current_rate self.state_ul.current_rate as u64
); );
if let Some(ref mut fd) = stats_fd { if let Some(ref mut fd) = stats_fd {
if let Err(e) = fd.write( if let Err(e) = fd.write(
format!( format!(
"{},{},{},{},{},{},{}\n", "{},{},{},{},{},{},{},{}\n",
time_format(SystemTime::now(), DUMP_DATETIME_FORMAT), stats_time.secs(),
stats_time.nsecs(),
self.state_dl.load, self.state_dl.load,
self.state_ul.load, self.state_ul.load,
self.state_dl.delta_stat, self.state_dl.delta_stat,
self.state_ul.delta_stat, self.state_ul.delta_stat,
self.state_dl.current_rate, self.state_dl.current_rate as u64,
self.state_ul.current_rate self.state_ul.current_rate as u64
) )
.as_bytes(), .as_bytes(),
) { ) {
@@ -404,10 +393,11 @@ impl Ratecontroller {
if let Some(ref mut fd) = speed_hist_fd { if let Some(ref mut fd) = speed_hist_fd {
if now_t.duration_since(lastdump_t).as_secs_f64() > 300.0 { if now_t.duration_since(lastdump_t).as_secs_f64() > 300.0 {
for i in 0..self.config.speed_hist_size as usize { for i in 0..self.config.speed_hist_size as usize {
let hist_time = Time::new(ClockId::Realtime);
if let Err(e) = fd.write_all( if let Err(e) = fd.write_all(
format!( format!(
"{},{},{},{}\n", "{},{},{},{}\n",
time_format(SystemTime::now(), DUMP_DATETIME_FORMAT), hist_time.as_secs_f64(),
i, i,
self.state_ul.safe_rates[i], self.state_ul.safe_rates[i],
self.state_dl.safe_rates[i] self.state_dl.safe_rates[i]