23 static constexpr size_t starting_view_change = 2;
33 virtual std::unique_ptr<ccf::kv::AbstractExecutionWrapper>
deserialize(
34 std::vector<uint8_t> data,
35 bool public_only =
false,
36 const std::optional<ccf::TxID>& expected_txid = std::nullopt) = 0;
62 p->rollback(tx_id, term_of_next_version);
71 p->initialise_term(t);
75 std::unique_ptr<ccf::kv::AbstractExecutionWrapper>
deserialize(
76 const std::vector<uint8_t> data,
77 bool public_only =
false,
78 const std::optional<ccf::TxID>& expected_txid = std::nullopt)
override
83 return p->deserialize(data, public_only, expected_txid);
106 "raft_append_entries_response"},
108 "raft_append_entries_signed_response"},
114 "raft_request_pre_vote_response"},
118 template <RaftMsgType M>
139 bool contains_new_view =
false;
204 RequestVote, term, last_committable_idx, term_of_last_committable_idx);
217 RequestPreVote, term, last_committable_idx, term_of_last_committable_idx);
258struct formatter<
aft::RaftMsgType>
260 template <
typename ParseContext>
261 constexpr auto parse(ParseContext& ctx)
266 template <
typename FormatContext>
268 ->
decltype(ctx.out())
274 return fmt::format_to(ctx.out(),
"append_entries");
278 return fmt::format_to(ctx.out(),
"append_entries_response");
282 return fmt::format_to(ctx.out(),
"append_entries_signed_response");
286 return fmt::format_to(ctx.out(),
"request_vote");
290 return fmt::format_to(ctx.out(),
"request_vote_response");
294 return fmt::format_to(ctx.out(),
"propose_request_vote");
298 return fmt::format_to(ctx.out(),
"request_pre_vote");
302 return fmt::format_to(ctx.out(),
"request_pre_vote_response");
305 throw std::runtime_error(
306 fmt::format(
"Unhandled RaftMsgType: {}", uint64_t(msg_type)));
Definition raft_types.h:41
Adaptor(std::shared_ptr< T > x)
Definition raft_types.h:46
void rollback(const ccf::TxID &tx_id, Term term_of_next_version) override
Definition raft_types.h:57
void initialise_term(Term t) override
Definition raft_types.h:66
std::unique_ptr< ccf::kv::AbstractExecutionWrapper > deserialize(const std::vector< uint8_t > data, bool public_only=false, const std::optional< ccf::TxID > &expected_txid=std::nullopt) override
Definition raft_types.h:75
void compact(Index v) override
Definition raft_types.h:48
Definition raft_types.h:26
virtual void rollback(const ccf::TxID &tx_id, Term term_of_next_version)=0
virtual std::unique_ptr< ccf::kv::AbstractExecutionWrapper > deserialize(std::vector< uint8_t > data, bool public_only=false, const std::optional< ccf::TxID > &expected_txid=std::nullopt)=0
virtual void compact(Index v)=0
virtual void initialise_term(Term t)=0
#define DECLARE_JSON_TYPE_WITH_BASE(TYPE, BASE)
Definition json.h:669
#define DECLARE_JSON_TYPE_WITH_2BASES(TYPE, BASE1, BASE2)
Definition json.h:680
#define DECLARE_JSON_REQUIRED_FIELDS(TYPE,...)
Definition json.h:718
#define DECLARE_JSON_TYPE(TYPE)
Definition json.h:667
#define DECLARE_JSON_ENUM(TYPE,...)
Definition json.h:841
ElectionType
Definition raft_types.h:185
@ PreVote
Definition raft_types.h:186
@ RegularVote
Definition raft_types.h:187
AppendEntriesResponseType
Definition raft_types.h:154
uint64_t Node2NodeMsg
Definition raft_types.h:21
uint64_t Term
Definition raft_types.h:20
RaftMsgType
Definition raft_types.h:91
@ raft_append_entries_response
Definition raft_types.h:93
@ raft_request_pre_vote_response
Definition raft_types.h:99
@ raft_request_vote
Definition raft_types.h:95
@ raft_request_pre_vote
Definition raft_types.h:98
@ raft_request_vote_response
Definition raft_types.h:96
@ raft_append_entries
Definition raft_types.h:92
@ raft_propose_request_vote
Definition raft_types.h:97
@ raft_append_entries_signed_response
Definition raft_types.h:94
uint64_t Index
Definition raft_types.h:19
Definition consensus_types.h:23
Definition raft_types.h:166
Term term
Definition raft_types.h:175
AppendEntriesResponseType success
Definition raft_types.h:177
Index last_log_idx
Definition raft_types.h:176
Definition raft_types.h:128
Index leader_commit_idx
Definition raft_types.h:131
Term prev_term
Definition raft_types.h:130
Term term
Definition raft_types.h:129
Term term_of_idx
Definition raft_types.h:136
Definition raft_types.h:244
Term term
Definition raft_types.h:247
Definition raft_types.h:233
bool vote_granted
Definition raft_types.h:235
Term term
Definition raft_types.h:234
Definition raft_types.h:209
Term term_of_last_committable_idx
Definition raft_types.h:212
Index last_committable_idx
Definition raft_types.h:211
Term term
Definition raft_types.h:210
Definition raft_types.h:222
Term term
Definition raft_types.h:223
bool vote_granted
Definition raft_types.h:224
Definition raft_types.h:197
Index last_committable_idx
Definition raft_types.h:199
Term term
Definition raft_types.h:198
Term term_of_last_committable_idx
Definition raft_types.h:200
Definition consensus_types.h:35