use bytes::Bytes;
use super::entry::INLINE_PAYLOAD_SIZE;
use super::error::RedexError;
use super::file::RedexFile;
#[derive(Clone)]
pub struct OrderedAppender {
file: RedexFile,
}
impl OrderedAppender {
pub fn new(file: RedexFile) -> Self {
Self { file }
}
pub fn file(&self) -> &RedexFile {
&self.file
}
pub fn append(&self, payload: &[u8]) -> Result<u64, RedexError> {
self.file.append_ordered(payload)
}
pub fn append_inline(&self, payload: &[u8; INLINE_PAYLOAD_SIZE]) -> Result<u64, RedexError> {
self.file.append_inline_ordered(payload)
}
pub fn append_batch(&self, payloads: &[Bytes]) -> Result<Option<u64>, RedexError> {
self.file.append_batch_ordered(payloads)
}
}
impl std::fmt::Debug for OrderedAppender {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("OrderedAppender")
.field("file", &self.file)
.finish()
}
}