sorock/process/thread/
log_compaction.rs

1use super::*;
2
3#[derive(Clone)]
4pub struct Thread {
5    command_log: CommandLog,
6}
7impl Thread {
8    async fn run_once(&self) -> Result<()> {
9        self.command_log.delete_old_entries().await
10    }
11
12    fn do_loop(self) -> ThreadHandle {
13        let fut = async move {
14            let mut interval = tokio::time::interval(Duration::from_secs(1));
15            loop {
16                interval.tick().await;
17                self.run_once().await.ok();
18            }
19        };
20        let hdl = tokio::spawn(fut).abort_handle();
21        ThreadHandle(hdl)
22    }
23}
24
25pub fn new(command_log: CommandLog) -> ThreadHandle {
26    Thread { command_log }.do_loop()
27}