filetracker: track total queued data (in_flight)

As well as expose number of chunks.
pull/7262/head
Victor Julien 3 years ago
parent 90d4b8e438
commit 2c5ad8858e

@ -66,6 +66,8 @@ pub struct FileTransferTracker {
chunks: HashMap<u64, FileChunk>,
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()
}
}

Loading…
Cancel
Save