use std::io;
use crate::store::DataOutput;
pub trait IndexOutput: DataOutput + Send {
fn name(&self) -> &str;
fn file_pointer(&self) -> u64;
fn checksum(&self) -> u64;
fn align_file_pointer(&mut self, alignment: usize) -> io::Result<u64> {
let pos = self.file_pointer();
let aligned = align_offset(pos, alignment);
let padding = (aligned - pos) as usize;
if padding > 0 {
const ZEROS: [u8; 16] = [0u8; 16];
self.write_all(&ZEROS[..padding])?;
}
Ok(aligned)
}
}
pub(crate) fn align_offset(offset: u64, alignment: usize) -> u64 {
let a = alignment as u64;
(offset + a - 1) & !(a - 1)
}