pub enum ReplicaApply {
SnapshotBegin,
SnapshotChunk(Vec<u8>),
SnapshotEnd {
ack_offset: u64,
routed: bool,
gate: Option<SnapshotGate>,
},
Frame {
offset: u64,
argv: Argv,
},
}Expand description
One event delivered from a replica runner to its target shard.
Mirrors kevy_replicate::replica::ReplicaEvent except Frame
carries an owned Argv (already decoded by the runner) instead
of a DecodedFrame { offset, argv } — the offset is gap-checked
by the runner on the way in, so the shard doesn’t need it.
Variants§
SnapshotBegin
Upstream started shipping a full snapshot. The shard should reset its accumulating snapshot buffer.
SnapshotChunk(Vec<u8>)
One chunk of snapshot bytes. The shard appends to its buffer.
SnapshotEnd
Upstream finished the snapshot. The shard hands its buffered
bytes to kevy_persist::load_snapshot_from (replacing the
Store contents) and resumes at ack_offset for live frames.
routed = true (single-source mode) means the payload is
the WHOLE upstream keyspace broadcast to every shard — each
shard loads only its own hash slice.
gate: dropped by the shard after the load lands (see
SnapshotGate); None when the runner has nothing to hang
on the completion.
Fields
ack_offset: u64Upstream offset the snapshot corresponds to; the shard acks from here once the load lands.
routed: booltrue when each shard received only its own hash slice;
false when the whole keyspace was broadcast and each shard
must filter.
gate: Option<SnapshotGate>Dropped by the shard once the load completes, which is how the
runner learns it finished. None when nothing is waiting.
Frame
One live mutation frame to be applied via kevy::dispatch
(inside a crate::ReplicatedApplyGuard scope so the apply
doesn’t re-push into this shard’s downstream
ReplicationSource).