pub struct ReconstructionPipeline<const MAX_DELTAS: usize> { /* private fields */ }Expand description
The reconstruction pipeline.
Orchestrates checkpoint decompression and delta application to reconstruct dormant memory regions.
MAX_DELTAS is the maximum number of witness deltas that can be
buffered during a single reconstruction operation.
Implementations§
Source§impl<const MAX_DELTAS: usize> ReconstructionPipeline<MAX_DELTAS>
impl<const MAX_DELTAS: usize> ReconstructionPipeline<MAX_DELTAS>
Sourcepub const fn delta_count(&self) -> usize
pub const fn delta_count(&self) -> usize
Return the number of buffered deltas.
Sourcepub fn add_delta(&mut self, delta: WitnessDelta) -> RvmResult<()>
pub fn add_delta(&mut self, delta: WitnessDelta) -> RvmResult<()>
Add a witness delta to the reconstruction buffer.
Deltas must be added in sequence order.
§Errors
Returns RvmError::ResourceLimitExceeded if the buffer is full.
Returns RvmError::WitnessChainBroken if the delta is out of sequence.
Sourcepub fn reconstruct<F>(
&self,
checkpoint: &CompressedCheckpoint,
compressed_data: &[u8],
output: &mut [u8],
delta_data_fn: F,
) -> RvmResult<ReconstructionResult>
pub fn reconstruct<F>( &self, checkpoint: &CompressedCheckpoint, compressed_data: &[u8], output: &mut [u8], delta_data_fn: F, ) -> RvmResult<ReconstructionResult>
Reconstruct a dormant region from a checkpoint and the buffered deltas.
§Parameters
checkpoint: Metadata about the compressed checkpoint.compressed_data: The compressed checkpoint bytes.output: Buffer to write the reconstructed region into. Must be at leastcheckpoint.uncompressed_sizebytes.delta_data_fn: A function that, given aWitnessDelta, returns a slice of the delta’s data bytes.
§Errors
Returns RvmError::CheckpointCorrupted if decompression fails, the
hash does not match, or a delta is out of bounds.
Returns RvmError::ResourceLimitExceeded if buffers are too small.
Returns RvmError::WitnessVerificationFailed if a delta’s data hash
does not match.