pub struct LogFile { /* private fields */ }Expand description
Redo log file reader.
Implementations§
Source§impl LogFile
impl LogFile
Sourcepub fn from_bytes(data: Vec<u8>) -> Result<Self, IdbError>
pub fn from_bytes(data: Vec<u8>) -> Result<Self, IdbError>
Create a log file reader from an in-memory byte buffer.
The buffer must be at least 2048 bytes (4 blocks of 512 bytes each for the header and checkpoint blocks).
§Examples
use idb::innodb::log::LogFile;
// Build a minimal valid redo log (4 header blocks + 1 data block)
let data = vec![0u8; 512 * 5];
let mut log = LogFile::from_bytes(data).unwrap();
let header = log.read_header().unwrap();
println!("Created by: {}", header.created_by);Sourcepub fn block_count(&self) -> u64
pub fn block_count(&self) -> u64
Total number of 512-byte blocks in the file.
Sourcepub fn data_block_count(&self) -> u64
pub fn data_block_count(&self) -> u64
Number of data blocks (excluding the 4 header/checkpoint blocks).
Sourcepub fn read_block(&mut self, block_no: u64) -> Result<Vec<u8>, IdbError>
pub fn read_block(&mut self, block_no: u64) -> Result<Vec<u8>, IdbError>
Read a single 512-byte block by block number.
Sourcepub fn read_header(&mut self) -> Result<LogFileHeader, IdbError>
pub fn read_header(&mut self) -> Result<LogFileHeader, IdbError>
Read and parse the log file header (block 0).
Sourcepub fn read_checkpoint(&mut self, slot: u8) -> Result<LogCheckpoint, IdbError>
pub fn read_checkpoint(&mut self, slot: u8) -> Result<LogCheckpoint, IdbError>
Read and parse a checkpoint (slot 0 = block 1, slot 1 = block 3).
Auto Trait Implementations§
impl Freeze for LogFile
impl !RefUnwindSafe for LogFile
impl !Send for LogFile
impl !Sync for LogFile
impl Unpin for LogFile
impl UnsafeUnpin for LogFile
impl !UnwindSafe for LogFile
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more