Skip to main content

Crate crafty_proto

Crate crafty_proto 

Source
Expand description

crafty-proto — wire types and postcard codec shared across all crafty crates.

Defines the on-the-wire representation for Raft peer RPCs, the client API, cluster join handshakes, and actor messaging. All bodies are encoded with postcard (wire-transport, serialization). Nothing here performs I/O.

Re-exports§

pub use actor::ActorEnvelope;
pub use actor::ActorId;
pub use actor::ActorRef;
pub use actor::ActorRegistration;
pub use actor::ActorTypeId;
pub use actor::DeliverAck;
pub use actor::DirectoryUpdate;
pub use actor::MigrateReply;
pub use actor::MigrateRequest;
pub use actor::RegisterAck;
pub use actor::ScaleReply;
pub use actor::ScaleRequest;
pub use actor::SpawnReply;
pub use actor::SpawnRequest;
pub use actor::StopReply;
pub use actor::StopRequest;
pub use actor_store::StoreCompareAndSetReply;
pub use actor_store::StoreCompareAndSetRequest;
pub use actor_store::StoreDeleteReply;
pub use actor_store::StoreDeleteRequest;
pub use actor_store::StoreReplicateOp;
pub use actor_store::StoreReplicateReply;
pub use actor_store::StoreReplicateRequest;
pub use actor_store::StoreSetReply;
pub use actor_store::StoreSetRequest;
pub use catalog::CatalogAddRequest;
pub use catalog::CatalogAddResponse;
pub use catalog::CatalogCommand;
pub use catalog::CatalogRejection;
pub use client::ClientRequest;
pub use client::ClientResponse;
pub use group::GroupPeerEnvelope;
pub use group_migrate::GroupMigrateReply;
pub use group_migrate::GroupMigrateRequest;
pub use group_migrate::GroupMigrationBundle;
pub use group_migrate::GroupMigrationHardState;
pub use group_migrate::GroupMigrationSnapshot;
pub use group_migrate::GroupMigrationSnapshotMeta;
pub use join::JoinRejection;
pub use join::JoinRequest;
pub use join::JoinResponse;
pub use join::PeerBook;
pub use join::PeerEntry;
pub use leave::LeaveRejection;
pub use leave::LeaveRequest;
pub use leave::LeaveResponse;
pub use queue::QueueAckBatchReply;
pub use queue::QueueAckBatchRequest;
pub use queue::QueueAckReply;
pub use queue::QueueAckRequest;
pub use queue::QueueBatchEnqueueJob;
pub use queue::QueueEnqueueBatchReply;
pub use queue::QueueEnqueueBatchRequest;
pub use queue::QueueEnqueueReply;
pub use queue::QueueEnqueueRequest;
pub use queue::QueueJobLifecycleWire;
pub use queue::QueueJobStatusReply;
pub use queue::QueueJobStatusRequest;
pub use queue::QueueLeaseReply;
pub use queue::QueueLeaseRequest;
pub use queue::QueueLeasedJobWire;
pub use queue::QueueMetricsReply;
pub use queue::QueueMetricsRequest;
pub use queue::QueueNackReply;
pub use queue::QueueNackRequest;
pub use queue::QueueReplicateOp;
pub use queue::QueueReplicateReply;
pub use queue::QueueReplicateRequest;
pub use queue::QueueRequeueDeadLetterReply;
pub use queue::QueueRequeueDeadLetterRequest;
pub use queue::RecurringScheduleWire;
pub use queue_autoscale::AutoscalePolicyWire;
pub use queue_autoscale::MembershipAutoscalePolicyWire;
pub use queue_autoscale::QueueAutoscalePolicyCommand;
pub use raft::AppendEntries;
pub use raft::AppendEntriesReply;
pub use raft::EntryPayload;
pub use raft::InstallSnapshot;
pub use raft::InstallSnapshotReply;
pub use raft::LogEntry;
pub use raft::Membership;
pub use raft::RaftRpc;
pub use raft::RaftRpcReply;
pub use raft::RequestVote;
pub use raft::RequestVoteReply;
pub use saga_journal::SagaJournalCommand;
pub use two_phase::TwoPhaseAbortCommand;
pub use two_phase::TwoPhasePrepareCommand;
pub use two_phase_journal::TwoPhaseJournalCommand;

Modules§

actor
Cross-node actor messaging + directory wire types (cross-node-actors, cluster-routing).
actor_store
Actor workflow store wire types (actor-state-store).
catalog
Dynamic multi-Raft catalog replication over group 0 (Tier 2).
client
Client API wire types sent over /client/wire (client-api, client-routing, read-consistency).
group
Multi-Raft wire envelopes (write-sharding-multi-raft).
group_migrate
Cross-node Raft group migration wire types (write-sharding-multi-raft).
join
Cluster join handshake wire types over /cluster/join (join-rpc, join-version-skew).
leave
Cluster leave handshake wire types over /cluster/leave (symmetric to join-rpc).
queue
Job queue wire types (job-queue).
queue_autoscale
Queue autoscale policy metadata replicated through Meta-Raft / group 0.
raft
Raft peer-to-peer RPC wire types (wire-transport, membership-early).
saga_journal
Cross-shard saga journal metadata replicated through group 0 (Tier 2 v2).
two_phase
Cross-shard two-phase commit metadata replicated through each Raft group log.
two_phase_journal
Cross-shard 2PC client journal metadata replicated through Meta-Raft (Tier 2).

Structs§

LogId
A position in the Raft log: the (term, index) pair that uniquely identifies an entry. Ordering is lexicographic on (term, index), which is exactly Raft’s log “up-to-date” comparison (§5.4.1), so LogId values can be compared directly instead of juggling two primitives.
LogIndex
1-based index into the Raft log.
NodeId
Stable identifier for a cluster node.
Round
A leader replication/heartbeat round, used to confirm leadership for linearizable ReadIndex reads (read-consistency). Monotonic per leader term.
Term
Raft term (monotonic election epoch).

Enums§

CodecError
Errors from encoding/decoding wire bodies.

Constants§

MIN_COMPATIBLE_PROTOCOL_VERSION
Oldest wire protocol this release accepts during rolling upgrades (N/N−1).
PROTOCOL_VERSION
Wire/protocol version negotiated on join (join-version-skew: hard reject on mismatch).
WIRE_CODEC
The wire codec in effect for this build: "postcard" by default, or "json" when the dev-only json-wire feature is enabled (future-work-and-risks item 4). Surfaced so a node can log/advertise its wire format at startup.

Functions§

decode
Decode a value from JSON (dev-only json-wire build). See WIRE_CODEC.
encode
Encode a value as JSON (dev-only json-wire build). See WIRE_CODEC.
protocol_version_compatible
Whether got is in the supported compatibility band [MIN..=PROTOCOL].