Expand description
Raft RPC binary codec.
Encodes/decodes all Raft RPC messages into a compact binary wire format using rkyv (zero-copy deserialization). Every frame includes a CRC32C integrity checksum and a version field for protocol evolution.
Wire layout (8-byte header + payload):
┌─────────┬──────────┬────────────┬──────────┬─────────────────────┐
│ version │ rpc_type │ payload_len│ crc32c │ rkyv payload bytes │
│ 1 byte │ 1 byte │ 4 bytes │ 4 bytes │ payload_len bytes │
└─────────┴──────────┴────────────┴──────────┴─────────────────────┘version: Wire protocol version (currently1).rpc_type: Discriminant forRaftRpcvariant.payload_len: Little-endian u32, byte count of the rkyv payload.crc32c: CRC32C over the rkyv payload bytes only.
Structs§
- Archived
Forward Request - An archived
ForwardRequest - Archived
Forward Response - An archived
ForwardResponse - Archived
Join Group Info - An archived
JoinGroupInfo - Archived
Join Node Info - An archived
JoinNodeInfo - Archived
Join Request - An archived
JoinRequest - Archived
Join Response - An archived
JoinResponse - Archived
Metadata Propose Request - An archived
MetadataProposeRequest - Archived
Metadata Propose Response - An archived
MetadataProposeResponse - Archived
Ping Request - An archived
PingRequest - Archived
Pong Response - An archived
PongResponse - Archived
Topology Ack - An archived
TopologyAck - Archived
Topology Update - An archived
TopologyUpdate - Forward
Request - Forward a SQL query to the leader node for a vShard.
- Forward
Request Resolver - The resolver for an archived
ForwardRequest - Forward
Response - Response to a forwarded SQL query.
- Forward
Response Resolver - The resolver for an archived
ForwardResponse - Join
Group Info - Raft group membership in the join response wire format.
- Join
Group Info Resolver - The resolver for an archived
JoinGroupInfo - Join
Node Info - Node info in the join response wire format.
- Join
Node Info Resolver - The resolver for an archived
JoinNodeInfo - Join
Request - Request to join an existing cluster.
- Join
Request Resolver - The resolver for an archived
JoinRequest - Join
Response - Response to a join request — carries full cluster state.
- Join
Response Resolver - The resolver for an archived
JoinResponse - Metadata
Propose Request - Forward an opaque metadata-group proposal payload to the
metadata-group leader. Used by
RaftLoop::propose_to_metadata_group_via_leaderwhen the local node is not the leader of the metadata raft group (group 0). The receiving node MUST be the current leader; if it is not, it returnsMetadataProposeResponse::not_leader. - Metadata
Propose Request Resolver - The resolver for an archived
MetadataProposeRequest - Metadata
Propose Response - Response to a forwarded metadata-group proposal.
- Metadata
Propose Response Resolver - The resolver for an archived
MetadataProposeResponse - Ping
Request - Health check ping.
- Ping
Request Resolver - The resolver for an archived
PingRequest - Pong
Response - Health check pong.
- Pong
Response Resolver - The resolver for an archived
PongResponse - Topology
Ack - Acknowledgement of a topology update.
- Topology
AckResolver - The resolver for an archived
TopologyAck - Topology
Update - Push topology update to a peer.
- Topology
Update Resolver - The resolver for an archived
TopologyUpdate
Enums§
- RaftRpc
- An RPC message — Raft consensus or cluster management.
Constants§
- HEADER_
SIZE - Header size in bytes: version(1) + rpc_type(1) + payload_len(4) + crc32c(4).
- LEADER_
REDIRECT_ PREFIX - Wire-level redirect contract between the join-flow producer
(
raft_loop::join::join_flow) and the client-side parser (bootstrap::join::parse_leader_hint).
Functions§
- decode
- Decode a framed binary message into a
RaftRpc. - encode
- Encode a
RaftRpcinto a framed binary message. - frame_
size - Return the total frame size for a buffer that starts with a valid header. Useful for stream framing — read the header, then read the remaining payload.