sorock/process/thread/
log_compaction.rs1use 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}