pub struct HummockVersionCheckpointEnvelope {
pub compression_algorithm: i32,
pub payload: Vec<u8>,
pub checksum: Option<u64>,
}Expand description
Envelope message wrapping a compressed or uncompressed HummockVersionCheckpoint. When compression_algorithm is NONE (or UNSPECIFIED), payload contains raw PbHummockVersionCheckpoint bytes. Otherwise, payload contains the compressed PbHummockVersionCheckpoint bytes.
Backward compatibility:
- Old code (unaware of this message) writes raw PbHummockVersionCheckpoint directly.
- New code tries to decode as HummockVersionCheckpointEnvelope first. If it fails (old format), it falls back to decoding as PbHummockVersionCheckpoint.
- Legacy bytes may occasionally decode as an envelope due to protobuf’s unknown-field
skipping, so readers treat
checksumas the discriminator: all new envelopes set it, while old raw checkpoints do not have field 3.
Format detection logic:
- Try to decode bytes as HummockVersionCheckpointEnvelope
- If checksum.is_some(), treat as new envelope format: a. Verify checksum against payload b. Decompress payload according to compression_algorithm c. Decode decompressed bytes as PbHummockVersionCheckpoint
- If checksum.is_none() or decode fails, treat as legacy format:
- Decode bytes directly as PbHummockVersionCheckpoint
Fields§
§compression_algorithm: i32§payload: Vec<u8>Compressed (or uncompressed if algorithm is NONE) PbHummockVersionCheckpoint bytes.
checksum: Option<u64>xxhash64 checksum of the payload bytes (compressed data) for integrity verification. Presence of this field distinguishes new envelope format from legacy raw checkpoints.
Implementations§
Source§impl HummockVersionCheckpointEnvelope
impl HummockVersionCheckpointEnvelope
Sourcepub fn compression_algorithm(&self) -> CheckpointCompressionAlgorithm
pub fn compression_algorithm(&self) -> CheckpointCompressionAlgorithm
Returns the enum value of compression_algorithm, or the default if the field is set to an invalid enum value.
Sourcepub fn set_compression_algorithm(
&mut self,
value: CheckpointCompressionAlgorithm,
)
pub fn set_compression_algorithm( &mut self, value: CheckpointCompressionAlgorithm, )
Sets compression_algorithm to the provided enum value.
Source§impl HummockVersionCheckpointEnvelope
impl HummockVersionCheckpointEnvelope
pub fn get_compression_algorithm( &self, ) -> Result<CheckpointCompressionAlgorithm, PbFieldNotFound>
pub fn get_payload(&self) -> &Vec<u8> ⓘ
pub fn get_checksum(&self) -> Result<&u64, PbFieldNotFound>
Trait Implementations§
Source§impl Clone for HummockVersionCheckpointEnvelope
impl Clone for HummockVersionCheckpointEnvelope
Source§fn clone(&self) -> HummockVersionCheckpointEnvelope
fn clone(&self) -> HummockVersionCheckpointEnvelope
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<'de> Deserialize<'de> for HummockVersionCheckpointEnvelope
impl<'de> Deserialize<'de> for HummockVersionCheckpointEnvelope
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Message for HummockVersionCheckpointEnvelope
impl Message for HummockVersionCheckpointEnvelope
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Returns the encoded length of the message without a length delimiter.
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Encodes the message to a buffer. Read more
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Encodes the message to a newly allocated buffer.
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Encodes the message with a length-delimiter to a buffer. Read more
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Encodes the message with a length-delimiter to a newly allocated buffer.
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Decodes an instance of the message from a buffer. Read more
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Decodes a length-delimited instance of the message from the buffer.
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
Decodes an instance of the message from a buffer, and merges it into
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
Decodes a length-delimited instance of the message from buffer, and
merges it into
self.Source§impl PartialEq for HummockVersionCheckpointEnvelope
impl PartialEq for HummockVersionCheckpointEnvelope
Source§fn eq(&self, other: &HummockVersionCheckpointEnvelope) -> bool
fn eq(&self, other: &HummockVersionCheckpointEnvelope) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for HummockVersionCheckpointEnvelope
impl StructuralPartialEq for HummockVersionCheckpointEnvelope
Auto Trait Implementations§
impl Freeze for HummockVersionCheckpointEnvelope
impl RefUnwindSafe for HummockVersionCheckpointEnvelope
impl Send for HummockVersionCheckpointEnvelope
impl Sync for HummockVersionCheckpointEnvelope
impl Unpin for HummockVersionCheckpointEnvelope
impl UnwindSafe for HummockVersionCheckpointEnvelope
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
Casts
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Forward to the method defined on the type
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Forward to the method defined on the type
Any.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].