Skip to main content

Framed

Struct Framed 

Source
struct Framed {
    block: Block,
    data: Buffer,
    header: MessageHeader,
    version: MetadataVersion,
}
Expand description

One encapsulated IPC message, described entirely by the checksummed bytes it starts at.

Nothing in here comes from the footer, and that is the point. The footer’s dictionaries and recordBatches vectors are the file’s table of contents, they sit outside the CRC, and a flatbuffer vector’s length is a single u32 — so clearing recordBatches is one bit flip that makes a block read back Ok with no rows in it. Not a panic and not an error: a whole table of telemetry silently gone, reported as success, which is the worst of the three outcomes and the only one no caller can react to.

The body does not need that table of contents. Every message declares its own metadata length in the 8-byte encapsulation prefix and its own body length in its flatbuffer header, both inside [0, body_len), so the messages chain: the next one starts exactly Framed::stride bytes after this one. Walking that chain costs one extra flatbuffer verify per message — a few hundred bytes each, against a CRC of the whole body — and takes the footer out of the read path.

Fields§

§block: Block

What arrow-rs is told about the message. Only metaDataLength is read back out of it (read_record_batch slices data by it); the offset is relative to data, which starts at the message, so it is zero.

§data: Buffer

Exactly this message: metadata, padding and body, and nothing after it.

§header: MessageHeader§version: MetadataVersion

Implementations§

Source§

impl Framed

Source

fn stride(&self) -> usize

Distance to the next message. metaDataLength is padded to ALIGNMENT by the writer and is at least 8, so this always advances.

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

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].
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more