use crate::common::PgId;
use bytemuck::{Pod, Zeroable};
use getset::{CopyGetters, Setters};
use std::mem;
pub(crate) const BUCKET_HEADER_SIZE: usize = mem::size_of::<BucketHeader>();
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, CopyGetters, Setters, Zeroable, Pod, Eq, PartialEq)]
#[getset(get_copy = "pub", set = "pub")]
pub struct BucketHeader {
root: PgId,
sequence: u64,
}
impl BucketHeader {
pub fn new(root: PgId, sequence: u64) -> BucketHeader {
BucketHeader { root, sequence }
}
pub fn inc_sequence(&mut self) {
self.sequence += 1;
}
}
impl From<BucketHeader> for String {
fn from(value: BucketHeader) -> Self {
format!("<pgid={},seq={}>", value.root, value.sequence)
}
}