d_engine_core/purge/
default_executor.rs1use std::sync::Arc;
2
3use d_engine_proto::common::LogId;
4use tonic::async_trait;
5
6use crate::PurgeExecutor;
7use crate::RaftLog;
8use crate::Result;
9use crate::TypeConfig;
10use crate::alias::ROF;
11
12pub struct DefaultPurgeExecutor<T: TypeConfig> {
14 pub(super) raft_log: Arc<ROF<T>>,
15
16 #[allow(dead_code)]
22 pub(super) pending_purge: Option<LogId>,
23}
24
25#[async_trait]
26impl<T: TypeConfig> PurgeExecutor for DefaultPurgeExecutor<T> {
27 async fn execute_purge(
28 &self,
29 last_included: LogId,
30 ) -> Result<()> {
31 self.raft_log.purge_logs_up_to(last_included).await
32 }
33}
34
35impl<T: TypeConfig> DefaultPurgeExecutor<T> {
36 pub fn new(raft_log: Arc<ROF<T>>) -> Self {
37 DefaultPurgeExecutor {
38 raft_log,
39 pending_purge: None,
40 }
41 }
42}