Skip to content

Commit

Permalink
TrafficStatus improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
ssrlive committed Jun 7, 2024
1 parent 9fd46c1 commit bbb1fb7
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions src/traffic_status.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,24 @@ lazy_static::lazy_static! {

pub(crate) fn traffic_status_update(delta_tx: usize, delta_rx: usize) -> Result<()> {
{
let is_none_or_error = TRAFFIC_STATUS_CALLBACK.lock().map(|guard| guard.is_none()).unwrap_or_else(|e| {
log::error!("Failed to acquire lock: {}", e);
true
});
if is_none_or_error {
return Ok(());
}
}
let traffic_status = {
let mut traffic_status = TRAFFIC_STATUS.write().map_err(|e| Error::from(e.to_string()))?;
traffic_status.tx += delta_tx as u64;
traffic_status.rx += delta_rx as u64;
}
*traffic_status
};
let old_time = { *TIME_STAMP.read().map_err(|e| Error::from(e.to_string()))? };
let interval_secs = SEND_INTERVAL_SECS.load(std::sync::atomic::Ordering::Relaxed);
if std::time::Instant::now().duration_since(old_time).as_secs() >= interval_secs {
send_traffic_stat()?;
send_traffic_stat(&traffic_status)?;
{
let mut time_stamp = TIME_STAMP.write().map_err(|e| Error::from(e.to_string()))?;
*time_stamp = std::time::Instant::now();
Expand All @@ -68,11 +78,10 @@ pub(crate) fn traffic_status_update(delta_tx: usize, delta_rx: usize) -> Result<
Ok(())
}

fn send_traffic_stat() -> Result<()> {
fn send_traffic_stat(traffic_status: &TrafficStatus) -> Result<()> {
if let Ok(cb) = TRAFFIC_STATUS_CALLBACK.lock() {
if let Some(cb) = cb.clone() {
let traffic_status = { *TRAFFIC_STATUS.read().map_err(|e| Error::from(e.to_string()))? };
unsafe { cb.call(&traffic_status) };
unsafe { cb.call(traffic_status) };
}
}
Ok(())
Expand Down

0 comments on commit bbb1fb7

Please sign in to comment.