raft_message
— RPC messages#
The raft_message
struct holds information about a single RPC message
being received or sent over the network.
Data types#
-
enum raft_message_type#
RPC message type codes.
enum raft_event_type { RAFT_APPEND_ENTRIES = 1, RAFT_APPEND_ENTRIES_RESULT, RAFT_REQUEST_VOTE, RAFT_REQUEST_VOTE_RESULT, RAFT_INSTALL_SNAPSHOT, RAFT_TIMEOUT_NOW };
-
struct raft_message#
Union of all RPC message structs, plus information about the sender or the receiver (depending on whether the message is being sent or received).
struct raft_message { enum raft_message_type type; /* RPC type code */ raft_id server_id; /* ID of sending or destination server */ const char *server_address; /* Address of sending or destination server */ union { /* Type-specific data */ struct raft_request_vote request_vote; struct raft_request_vote_result request_vote_result; struct raft_append_entries append_entries; struct raft_append_entries_result append_entries_result; struct raft_install_snapshot install_snapshot; struct raft_timeout_now timeout_now; }; };
RequestVote#
-
struct raft_request_vote#
Holds the parameters of a RequestVote RPC message.
struct raft_request_vote { unsigned char version; /* Message format version. */ raft_term term; /* Candidate's term */ raft_id candidate_id; /* ID of the server requesting the vote */ raft_index last_log_index; /* Index of candidate's last log entry */ raft_index last_log_term; /* Term of log entry at last_log_index */ bool disrupt_leader; /* True if current leader should be discarded */ bool pre_vote; /* True if this is a pre-vote request */ };
RequestVote result#
-
struct raft_request_vote_result#
Holds the parameters of a RequestVote RPC result message.
struct raft_append_entries_result { unsigned char version; /* Message format version */ raft_term term; /* Receiver's current_term */ raft_index rejected; /* If non-zero, the index that was rejected */ raft_index last_log_index; /* Receiver's last log entry index, as hint */ unsigned short features; /* Feature flags (since version 1) */ unsigned short capacity; /* Reserved disk capacity for log entries */ };
AppendEntries#
-
struct raft_append_entries#
Holds the parameters of an AppendEntries RPC request message.
struct raft_append_entries { unsigned char version; /* Message format version */ raft_term term; /* Leader's term */ raft_index prev_log_index; /* Index of log entry preceeding new ones */ raft_term prev_log_term; /* Term of entry at prev_log_index */ raft_index leader_commit; /* Leader's commit index */ struct raft_entry *entries; /* Log entries to append */ unsigned n_entries; /* Size of the log entries array */ };
AppendEntries result#
-
struct raft_append_entries_result#
Holds the parameters of an AppendEntries RPC result message.
struct raft_append_entries_result { unsigned char version; /* Message format version */ raft_term term; /* Receiver's current_term */ raft_index rejected; /* If non-zero, the index that was rejected */ raft_index last_log_index; /* Receiver's last log entry index, as hint */ unsigned short features; /* Feature flags (since version 1) */ unsigned short capacity; /* Reserved disk capacity for log entries */ };
InstallSnapshot#
-
struct raft_install_snapshot#
Holds the parameters of an InstallSnapshot RPC request message.
struct raft_install_snapshot { unsigned char version; /* Message format version */ raft_term term; /* Leader's term */ raft_index last_index; /* Index of last entry in the snapshot */ raft_term last_term; /* Term of last_index */ struct raft_configuration conf; /* Config as of last_index */ raft_index conf_index; /* Commit index of conf */ struct raft_buffer data; /* Raw snapshot data */ };
TimeoutNow#
-
struct raft_timeout_now#
Holds the parameters of a TimeoutNow RPC request message.
struct raft_timeout_now { unsigned char version; /* Message format version */ raft_term term; /* Leader's term */ raft_index last_log_index; /* Index of leader's last log entry */ raft_index last_log_term; /* Term of log entry at last_log_index */ };