Skip to content

Commit

Permalink
traffic: statistics use the u64 type (#678)
Browse files Browse the repository at this point in the history
Signed-off-by: Xiaobo Liu <[email protected]>
Co-authored-by: Yuwei Ba <[email protected]>
  • Loading branch information
cppcoffee and ibigbug authored Jan 27, 2025
1 parent 2d9556c commit 4603769
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 23 deletions.
4 changes: 2 additions & 2 deletions clash_lib/src/app/api/handlers/traffic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ use crate::app::api::AppState;

#[derive(Serialize)]
struct TrafficResponse {
up: i64,
down: i64,
up: u64,
down: u64,
}
pub async fn handle(
ws: WebSocketUpgrade,
Expand Down
41 changes: 20 additions & 21 deletions clash_lib/src/app/dispatcher/statistics_manager.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use std::{
collections::HashMap,
sync::{
atomic::{AtomicI64, AtomicU64, Ordering},
atomic::{AtomicU64, Ordering},
Arc,
},
};
Expand Down Expand Up @@ -53,8 +53,8 @@ pub struct TrackerInfo {
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Snapshot {
download_total: i64,
upload_total: i64,
download_total: u64,
upload_total: u64,
connections: Vec<TrackerInfo>,
memory: usize,
}
Expand All @@ -63,24 +63,24 @@ type ConnectionMap = HashMap<uuid::Uuid, (Tracked, Sender<()>)>;

pub struct Manager {
connections: Arc<Mutex<ConnectionMap>>,
upload_temp: AtomicI64,
download_temp: AtomicI64,
upload_blip: AtomicI64,
download_blip: AtomicI64,
upload_total: AtomicI64,
download_total: AtomicI64,
upload_temp: AtomicU64,
download_temp: AtomicU64,
upload_blip: AtomicU64,
download_blip: AtomicU64,
upload_total: AtomicU64,
download_total: AtomicU64,
}

impl Manager {
pub fn new() -> Arc<Self> {
let v = Arc::new(Self {
connections: Arc::new(Mutex::new(HashMap::new())),
upload_temp: AtomicI64::new(0),
download_temp: AtomicI64::new(0),
upload_blip: AtomicI64::new(0),
download_blip: AtomicI64::new(0),
upload_total: AtomicI64::new(0),
download_total: AtomicI64::new(0),
upload_temp: AtomicU64::new(0),
download_temp: AtomicU64::new(0),
upload_blip: AtomicU64::new(0),
download_blip: AtomicU64::new(0),
upload_total: AtomicU64::new(0),
download_total: AtomicU64::new(0),
});
let c = v.clone();
tokio::spawn(async move {
Expand Down Expand Up @@ -128,20 +128,19 @@ impl Manager {

pub fn push_uploaded(&self, n: usize) {
self.upload_temp
.fetch_add(n as i64, std::sync::atomic::Ordering::Relaxed);
.fetch_add(n as u64, std::sync::atomic::Ordering::Relaxed);
self.upload_total
.fetch_add(n as i64, std::sync::atomic::Ordering::Relaxed);
.fetch_add(n as u64, std::sync::atomic::Ordering::Relaxed);
}

pub fn push_downloaded(&self, n: usize) {
self.download_temp
.fetch_add(n as i64, std::sync::atomic::Ordering::Relaxed);
.fetch_add(n as u64, std::sync::atomic::Ordering::Relaxed);
self.download_total
.fetch_add(n as i64, std::sync::atomic::Ordering::Relaxed);
.fetch_add(n as u64, std::sync::atomic::Ordering::Relaxed);
}

// TODO: make this u64
pub fn now(&self) -> (i64, i64) {
pub fn now(&self) -> (u64, u64) {
(
self.upload_blip.load(std::sync::atomic::Ordering::Relaxed),
self.download_blip
Expand Down

0 comments on commit 4603769

Please sign in to comment.