use std::sync::mpsc::SyncSender;
use crate::Types;
use crate::raft_log::wal::flush_worker::FileEntry;
pub(crate) struct SeqRequest<T: Types> {
pub(crate) seq: u64,
pub(crate) req: WorkerRequest<T>,
}
pub(crate) struct WriteRequest<T: Types> {
pub(crate) upto_offset: u64,
pub(crate) data: Vec<u8>,
pub(crate) sync: bool,
pub(crate) callback: Option<T::Callback>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[allow(dead_code)]
pub(crate) struct FlushStat {
pub(crate) starting_offset: u64,
pub(crate) sync_id: u64,
pub(crate) ino: u64,
}
impl FlushStat {
#[allow(dead_code)]
pub(crate) fn offset_sync_id(&self) -> (u64, u64) {
(self.starting_offset, self.sync_id)
}
}
pub(crate) enum WorkerRequest<T: Types> {
AppendFile(FileEntry<T>),
RemoveChunks { chunk_paths: Vec<String> },
Write(WriteRequest<T>),
#[allow(dead_code)]
GetFlushStat { tx: SyncSender<Vec<FlushStat>> },
}