pub struct FrameHeader {
pub kind: FrameKind,
pub committed_at: i64,
pub run_id: Option<String>,
pub run_totals: Option<RunTotals>,
}Expand description
The decoded envelope header. See the module docs for the wire layout.
Fields§
§kind: FrameKind§committed_at: i64Commit wall clock, unix millis; 0 = unknown (engine-written FrameKind::Empty
records). Timestamp→cid PITR resolution scans this field and must skip empties
(212 §3). App-stamped pre-commit, so only approximately monotone across cids —
resolvers tolerate local clock steps.
run_id: Option<String>The run identity the epoch fence checks (subscribe_run_id_matches becomes a
payload decode under 211 §4.1).
run_totals: Option<RunTotals>Implementations§
Source§impl FrameHeader
impl FrameHeader
Sourcepub fn empty() -> Self
pub fn empty() -> Self
The engine-written empty record (post-allocation validation failure, crash
zero-fill) as a frame: kind FrameKind::Empty, no wall clock, no run.
Sourcepub fn encode(&self, payload: &[u8]) -> Result<Vec<u8>, FrameEncodeError>
pub fn encode(&self, payload: &[u8]) -> Result<Vec<u8>, FrameEncodeError>
Encode header ‖ payload as a LEGACY v1 frame — one opaque payload blob. Production
paths write v2 via encode_frame; this stays for the
decode-forever compatibility fixtures and for tests that treat payloads as opaque.
Sourcepub fn encode_frame(
&self,
chunks: &[&[u8]],
) -> Result<Vec<u8>, FrameEncodeError>
pub fn encode_frame( &self, chunks: &[&[u8]], ) -> Result<Vec<u8>, FrameEncodeError>
Encode header ‖ chunk container as one v2 frame in a SINGLE buffer — the bytes handed
to leader_commit (and, framed under a cid, stored in segments). The container is built
in place, so a maximum-size transaction costs one output allocation, not a container copy
plus a frame copy. FrameKind::Empty takes NO chunks (an empty entry means “no
payload existed”); every other kind takes at least one.
Sourcepub fn decode_chunks(
bytes: &[u8],
) -> Result<(FrameHeader, Vec<&[u8]>), FrameDecodeError>
pub fn decode_chunks( bytes: &[u8], ) -> Result<(FrameHeader, Vec<&[u8]>), FrameDecodeError>
Decode a full frame into its header and ordered payload chunks — the ONE decode every
chunk consumer shares. A v1 frame’s opaque legacy payload is returned as a single chunk;
a v2 frame’s chunk container is mandatory (a payload without it is a decode error, never
a legacy guess); an FrameKind::Empty frame decodes to no chunks.
Sourcepub fn decode(bytes: &[u8]) -> Result<(FrameHeader, &[u8]), FrameDecodeError>
pub fn decode(bytes: &[u8]) -> Result<(FrameHeader, &[u8]), FrameDecodeError>
Decode a header ‖ payload buffer (either frame version); returns the header and the
RAW payload slice. The payload’s shape depends on the frame version — chunk consumers
use decode_chunks; this is for header-only readers and code
that forwards the payload opaquely.
Trait Implementations§
Source§impl Clone for FrameHeader
impl Clone for FrameHeader
Source§fn clone(&self) -> FrameHeader
fn clone(&self) -> FrameHeader
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more