#[repr(C)]pub struct IngestHeader {
pub batch_id: u64,
pub timestamp_ns: u64,
pub record_count: u32,
pub payload_length: u32,
pub payload_crc: u32,
pub topic_id: u32,
}Expand description
Zero-copy ingest header per Architecture §13.3.
#[repr(C)] ensures deterministic field layout matching the wire format.
zerocopy::{FromBytes, IntoBytes} enables zero-copy casting from network
buffers without per-field deserialization.
Fields§
§batch_id: u64§timestamp_ns: u64§record_count: u32§payload_length: u32§payload_crc: u32§topic_id: u32Implementations§
Source§impl IngestHeader
impl IngestHeader
pub const SIZE: usize = 32
pub fn new( batch_id: u64, timestamp_ns: u64, record_count: u32, payload_length: u32, payload_crc: u32, ) -> Self
pub fn with_topic( batch_id: u64, timestamp_ns: u64, record_count: u32, payload_length: u32, payload_crc: u32, topic_id: u32, ) -> Self
Sourcepub fn parse(buf: &[u8]) -> Result<Self>
pub fn parse(buf: &[u8]) -> Result<Self>
Zero-copy parse: reinterpret a byte slice as an IngestHeader.
On little-endian architectures this is a simple pointer cast with no field-by-field deserialization. On big-endian it falls back to the per-field path (compile-time).
Sourcepub fn encode_into(&self, buf: &mut [u8])
pub fn encode_into(&self, buf: &mut [u8])
Zero-copy encode: write struct bytes directly into buffer.
On little-endian architectures this is a single memcpy.
pub fn validate_payload(&self, payload: &[u8]) -> Result<()>
Trait Implementations§
Source§impl Clone for IngestHeader
impl Clone for IngestHeader
Source§fn clone(&self) -> IngestHeader
fn clone(&self) -> IngestHeader
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 Debug for IngestHeader
impl Debug for IngestHeader
Source§impl Default for IngestHeader
impl Default for IngestHeader
Source§fn default() -> IngestHeader
fn default() -> IngestHeader
Returns the “default value” for a type. Read more
Source§impl FromBytes for IngestHeader
impl FromBytes for IngestHeader
Source§impl FromZeros for IngestHeader
impl FromZeros for IngestHeader
Source§impl IntoBytes for IngestHeader
impl IntoBytes for IngestHeader
Source§fn as_mut_bytes(&mut self) -> &mut [u8] ⓘwhere
Self: FromBytes,
fn as_mut_bytes(&mut self) -> &mut [u8] ⓘwhere
Self: FromBytes,
Gets the bytes of this value mutably. Read more
Source§fn write_to(&self, dst: &mut [u8]) -> Result<(), SizeError<&Self, &mut [u8]>>where
Self: Immutable,
fn write_to(&self, dst: &mut [u8]) -> Result<(), SizeError<&Self, &mut [u8]>>where
Self: Immutable,
Source§impl TryFromBytes for IngestHeader
impl TryFromBytes for IngestHeader
Source§fn try_read_from_bytes(
source: &[u8],
) -> Result<Self, ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
fn try_read_from_bytes(
source: &[u8],
) -> Result<Self, ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
Source§fn try_read_from_prefix(
source: &[u8],
) -> Result<(Self, &[u8]), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
fn try_read_from_prefix(
source: &[u8],
) -> Result<(Self, &[u8]), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
Source§fn try_read_from_suffix(
source: &[u8],
) -> Result<(&[u8], Self), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
fn try_read_from_suffix(
source: &[u8],
) -> Result<(&[u8], Self), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
impl Copy for IngestHeader
impl Immutable for IngestHeader
Auto Trait Implementations§
impl Freeze for IngestHeader
impl RefUnwindSafe for IngestHeader
impl Send for IngestHeader
impl Sync for IngestHeader
impl Unpin for IngestHeader
impl UnsafeUnpin for IngestHeader
impl UnwindSafe for IngestHeader
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request