From 2c5ad8858e38fce20155044a06969693fe472d4c Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Sat, 16 Apr 2022 06:57:56 +0200 Subject: [PATCH] filetracker: track total queued data (in_flight) As well as expose number of chunks. --- rust/src/filetracker.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/rust/src/filetracker.rs b/rust/src/filetracker.rs index 48b810b112..d10acdbe6f 100644 --- a/rust/src/filetracker.rs +++ b/rust/src/filetracker.rs @@ -66,6 +66,8 @@ pub struct FileTransferTracker { chunks: HashMap, cur_ooo_chunk_offset: u64, + + in_flight: u64, } impl FileTransferTracker { @@ -224,6 +226,9 @@ impl FileTransferTracker { self.cur_ooo += d.len() as u64; c.contains_gap |= is_gap; c.chunk.extend(d); + + self.in_flight += d.len() as u64; + SCLogDebug!("{:p} in_flight {}", self, self.in_flight); } consumed += self.chunk_left as usize; @@ -247,6 +252,8 @@ impl FileTransferTracker { let _offset = self.tracked; match self.chunks.remove(&self.tracked) { Some(c) => { + self.in_flight -= c.chunk.len() as u64; + let res = files.file_append(&self.track_id, &c.chunk, c.contains_gap); match res { 0 => { }, @@ -307,6 +314,7 @@ impl FileTransferTracker { c.chunk.extend(data); c.contains_gap |= is_gap; self.cur_ooo += data.len() as u64; + self.in_flight += data.len() as u64; } self.chunk_left -= data.len() as u32; @@ -319,4 +327,11 @@ impl FileTransferTracker { pub fn get_queued_size(&self) -> u64 { self.cur_ooo } + + pub fn get_inflight_size(&self) -> u64 { + self.in_flight + } + pub fn get_inflight_cnt(&self) -> usize { + self.chunks.len() + } }