Skip to main content

Crate krabka_records_legacy

Crate krabka_records_legacy 

Source
Expand description

Apache Kafka legacy (v0/v1) MessageSet codec.

This crate also bridges to and from the v2 RecordBatch types in [krabka_protocol].

See the Kafka protocol docs for the wire layout that this crate implements. v0 carries no per-message timestamp. v1 adds one i64 timestamp per message (KIP-32). Both versions signal compression in the low 3 bits of the per-message attributes byte. The compressed payload is a single outer message whose value is a nested, uncompressed MessageSet.

§Quick tour

§Encode and decode a v1 MessageSet

use {
    bytes::{Bytes, BytesMut},
    krabka_ids::Offset,
    krabka_records_legacy::{Magic, ParsedRecord, decode_message_set, encode_flat_message_set},
};

let records = vec![ParsedRecord {
    offset: Offset(42),
    timestamp: Some(1_713_000_000_000),
    key: Some(Bytes::from_static(b"order-42")),
    value: Some(Bytes::from_static(b"created")),
}];

let mut buf = BytesMut::new();
encode_flat_message_set(records, Magic::V1, &mut buf);
let decoded = decode_message_set(&mut &buf[..], buf.len())?;
assert2::assert!((decoded[0].offset) == (Offset(42)));

Modules§

attrs
Bit layout of the legacy attributes byte.

Structs§

Message
Owned legacy message, decoded after the frame parse.
ParsedRecord
A single decoded MessageSet entry.

Enums§

LegacyRecordsError
Magic
Magic byte, that is, the legacy message-format version: 0 or 1.

Functions§

attrs_with_compression
Panics
compression_from_attrs
Map a v0/v1 compression code to a [CompressionType].
decode_message_set
Decode a flat, uncompressed MessageSet from buf.
decode_message_set_with_policy
Decode a legacy MessageSet with explicit decompression limits.
encode_compressed_message_set
Encode a MessageSet wrapped in a single compressed outer message.
encode_flat_message_set
Encode a flat MessageSet of magic magic into buf.
legacy_to_v2
Up-convert a v0/v1 MessageSet to a v2 [RecordBatch].
legacy_to_v2_with_policy
Up-convert a legacy MessageSet using explicit decompression limits.
parsed_from_v2
Iterate the v2 batch’s records and drop control batches entirely.
v2_to_legacy
Down-convert a v2 [RecordBatch] to v0/v1 MessageSet bytes.