arpx/runtime/job/task/log_monitor/
rolling_buffer.rs

1#[derive(Clone, Debug)]
2pub struct RollingBuffer {
3    pub lines: Vec<String>,
4    pub size: usize,
5}
6
7impl RollingBuffer {
8    pub fn new(size: usize) -> Self {
9        Self {
10            lines: Vec::new(),
11            size,
12        }
13    }
14
15    pub fn push(&mut self, line: String) {
16        if self.lines.len() == self.size {
17            self.lines.remove(0);
18        }
19
20        self.lines.push(line);
21    }
22
23    pub fn dump(&self) -> String {
24        self.lines.join("\n")
25    }
26}