Skip to main content

Module rpc_codec

Module rpc_codec 

Source
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 (currently 1).
  • rpc_type: Discriminant for RaftRpc variant.
  • payload_len: Little-endian u32, byte count of the rkyv payload.
  • crc32c: CRC32C over the rkyv payload bytes only.

Structs§

ArchivedForwardRequest
An archived ForwardRequest
ArchivedForwardResponse
An archived ForwardResponse
ArchivedJoinGroupInfo
An archived JoinGroupInfo
ArchivedJoinNodeInfo
An archived JoinNodeInfo
ArchivedJoinRequest
An archived JoinRequest
ArchivedJoinResponse
An archived JoinResponse
ArchivedMetadataProposeRequest
An archived MetadataProposeRequest
ArchivedMetadataProposeResponse
An archived MetadataProposeResponse
ArchivedPingRequest
An archived PingRequest
ArchivedPongResponse
An archived PongResponse
ArchivedTopologyAck
An archived TopologyAck
ArchivedTopologyUpdate
An archived TopologyUpdate
ForwardRequest
Forward a SQL query to the leader node for a vShard.
ForwardRequestResolver
The resolver for an archived ForwardRequest
ForwardResponse
Response to a forwarded SQL query.
ForwardResponseResolver
The resolver for an archived ForwardResponse
JoinGroupInfo
Raft group membership in the join response wire format.
JoinGroupInfoResolver
The resolver for an archived JoinGroupInfo
JoinNodeInfo
Node info in the join response wire format.
JoinNodeInfoResolver
The resolver for an archived JoinNodeInfo
JoinRequest
Request to join an existing cluster.
JoinRequestResolver
The resolver for an archived JoinRequest
JoinResponse
Response to a join request — carries full cluster state.
JoinResponseResolver
The resolver for an archived JoinResponse
MetadataProposeRequest
Forward an opaque metadata-group proposal payload to the metadata-group leader. Used by RaftLoop::propose_to_metadata_group_via_leader when 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 returns MetadataProposeResponse::not_leader.
MetadataProposeRequestResolver
The resolver for an archived MetadataProposeRequest
MetadataProposeResponse
Response to a forwarded metadata-group proposal.
MetadataProposeResponseResolver
The resolver for an archived MetadataProposeResponse
PingRequest
Health check ping.
PingRequestResolver
The resolver for an archived PingRequest
PongResponse
Health check pong.
PongResponseResolver
The resolver for an archived PongResponse
TopologyAck
Acknowledgement of a topology update.
TopologyAckResolver
The resolver for an archived TopologyAck
TopologyUpdate
Push topology update to a peer.
TopologyUpdateResolver
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 RaftRpc into 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.