1 module hunt.raft.Msg; 2 3 enum EntryType { 4 EntryNormal = 0, 5 EntryConfChange = 1, 6 } 7 8 struct Entry { 9 ulong Term; 10 ulong Index; 11 EntryType Type; 12 string Data; 13 } 14 15 struct SnapshotMetadata { 16 ConfState CS; 17 ulong Index; 18 ulong Term; 19 } 20 21 struct Snapshot { 22 string Data; 23 SnapshotMetadata Metadata; 24 } 25 26 enum MessageType { 27 MsgHup = 0, 28 MsgBeat = 1, 29 MsgProp = 2, 30 MsgApp = 3, 31 MsgAppResp = 4, 32 MsgVote = 5, 33 MsgVoteResp = 6, 34 MsgSnap = 7, 35 MsgHeartbeat = 8, 36 MsgHeartbeatResp = 9, 37 MsgUnreachable = 10, 38 MsgSnapStatus = 11, 39 MsgCheckQuorum = 12, 40 MsgTransferLeader = 13, 41 MsgTimeoutNow = 14, 42 MsgReadIndex = 15, 43 MsgReadIndexResp = 16, 44 MsgPreVote = 17, 45 MsgPreVoteResp = 18, 46 } 47 48 struct Message { 49 MessageType Type; 50 ulong To; 51 ulong From; 52 ulong Term; 53 ulong LogTerm; 54 ulong Index; 55 Entry[] Entries; 56 ulong Commit; 57 Snapshot snap; 58 bool Reject; 59 ulong RejectHint; 60 string Context; 61 } 62 63 struct HardState { 64 ulong Term; 65 ulong Vote; 66 ulong Commit; 67 } 68 69 struct ConfState { 70 ulong[] Nodes; 71 } 72 73 enum ConfChangeType { 74 ConfChangeAddNode = 0, 75 ConfChangeRemoveNode = 1, 76 ConfChangeUpdateNode = 2, 77 } 78 79 struct ConfChange{ 80 ulong ID; 81 ConfChangeType Type; 82 ulong NodeID ; 83 string Context; 84 } 85