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}