pub trait BlockAllocator: Send + Sync {
// Required methods
fn allocate_blocks(&self, num_blocks: usize) -> Result<Vec<BlockId>>;
fn free_blocks(&self, blocks: &[BlockId]) -> Result<()>;
fn free_block_count(&self) -> usize;
fn total_block_count(&self) -> usize;
fn block_size(&self) -> usize;
fn defragment(&self) -> Result<()>;
}Expand description
Block-based cache allocator
Required Methods§
Sourcefn allocate_blocks(&self, num_blocks: usize) -> Result<Vec<BlockId>>
fn allocate_blocks(&self, num_blocks: usize) -> Result<Vec<BlockId>>
Allocate specified number of blocks
Sourcefn free_blocks(&self, blocks: &[BlockId]) -> Result<()>
fn free_blocks(&self, blocks: &[BlockId]) -> Result<()>
Free blocks back to allocator
Sourcefn free_block_count(&self) -> usize
fn free_block_count(&self) -> usize
Get number of free blocks
Sourcefn total_block_count(&self) -> usize
fn total_block_count(&self) -> usize
Get total block count
Sourcefn block_size(&self) -> usize
fn block_size(&self) -> usize
Get block size in tokens
Sourcefn defragment(&self) -> Result<()>
fn defragment(&self) -> Result<()>
Defragment free block list