syntax = "proto2"; package raftpb; import "gogoproto/gogo.proto"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; option (gogoproto.unmarshaler_all) = true; option (gogoproto.goproto_getters_all) = false; option (gogoproto.goproto_enum_prefix_all) = false; enum EntryType { EntryNormal = 0; EntryConfChange = 1; } message Entry { optional uint64 Term = 2 [(gogoproto.nullable) = false]; // must be 64-bit aligned for atomic operations optional uint64 Index = 3 [(gogoproto.nullable) = false]; // must be 64-bit aligned for atomic operations optional EntryType Type = 1 [(gogoproto.nullable) = false]; optional bytes Data = 4; } message SnapshotMetadata { optional ConfState conf_state = 1 [(gogoproto.nullable) = false]; optional uint64 index = 2 [(gogoproto.nullable) = false]; optional uint64 term = 3 [(gogoproto.nullable) = false]; } message Snapshot { optional bytes data = 1; optional SnapshotMetadata metadata = 2 [(gogoproto.nullable) = false]; } enum MessageType { MsgHup = 0; MsgBeat = 1; MsgProp = 2; MsgApp = 3; MsgAppResp = 4; MsgVote = 5; MsgVoteResp = 6; MsgSnap = 7; MsgHeartbeat = 8; MsgHeartbeatResp = 9; MsgUnreachable = 10; MsgSnapStatus = 11; MsgCheckQuorum = 12; MsgTransferLeader = 13; MsgTimeoutNow = 14; MsgReadIndex = 15; MsgReadIndexResp = 16; MsgPreVote = 17; MsgPreVoteResp = 18; } message Message { optional MessageType type = 1 [(gogoproto.nullable) = false]; optional uint64 to = 2 [(gogoproto.nullable) = false]; optional uint64 from = 3 [(gogoproto.nullable) = false]; optional uint64 term = 4 [(gogoproto.nullable) = false]; optional uint64 logTerm = 5 [(gogoproto.nullable) = false]; optional uint64 index = 6 [(gogoproto.nullable) = false]; repeated Entry entries = 7 [(gogoproto.nullable) = false]; optional uint64 commit = 8 [(gogoproto.nullable) = false]; optional Snapshot snapshot = 9 [(gogoproto.nullable) = false]; optional bool reject = 10 [(gogoproto.nullable) = false]; optional uint64 rejectHint = 11 [(gogoproto.nullable) = false]; optional bytes context = 12; } message HardState { optional uint64 term = 1 [(gogoproto.nullable) = false]; optional uint64 vote = 2 [(gogoproto.nullable) = false]; optional uint64 commit = 3 [(gogoproto.nullable) = false]; } message ConfState { repeated uint64 nodes = 1; repeated uint64 learners = 2; } enum ConfChangeType { ConfChangeAddNode = 0; ConfChangeRemoveNode = 1; ConfChangeUpdateNode = 2; ConfChangeAddLearnerNode = 3; } message ConfChange { optional uint64 ID = 1 [(gogoproto.nullable) = false]; optional ConfChangeType Type = 2 [(gogoproto.nullable) = false]; optional uint64 NodeID = 3 [(gogoproto.nullable) = false]; optional bytes Context = 4; }