Skip to content

Commit

Permalink
Misc fixes
Browse files Browse the repository at this point in the history
- add const& 's
- all members private
- remove dead code
- better loop patterns by @greg7mdp
  • Loading branch information
fcecin committed Sep 20, 2023
1 parent 357dcc4 commit 5c6c311
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 43 deletions.
6 changes: 3 additions & 3 deletions libraries/hotstuff/include/eosio/hotstuff/test_pacemaker.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace eosio { namespace hotstuff {

void set_next_leader(name next_leader);

void set_finalizers(std::vector<name> finalizers);
void set_finalizers(const std::vector<name>& finalizers);

void set_current_block_id(block_id_type id);

Expand Down Expand Up @@ -77,6 +77,8 @@ namespace eosio { namespace hotstuff {

void send_hs_message_warning(const uint32_t sender_peer, const chain::hs_message_warning code);

private:

std::vector<hotstuff_message> _pending_message_queue;

// qc_chain id to qc_chain object
Expand All @@ -90,8 +92,6 @@ namespace eosio { namespace hotstuff {
// this is a filter; messages to self won't happen even if _net[x] yields x.
map<name, std::set<name>> _net;

private:

name _proposer;
name _leader;
name _next_leader;
Expand Down
4 changes: 0 additions & 4 deletions libraries/hotstuff/test/test_hotstuff.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,6 @@ class hotstuff_test_handler {
std::cout << "\n";
}

void print_msg_queue(test_pacemaker &tpm){
print_msgs(tpm._pending_message_queue);
}

void print_pm_state(test_pacemaker &tpm){
std::cout << "\n";
std::cout << " leader : " << tpm.get_leader() << "\n";
Expand Down
52 changes: 16 additions & 36 deletions libraries/hotstuff/test/test_pacemaker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace eosio::hotstuff {
_next_leader = next_leader;
};

void test_pacemaker::set_finalizers(std::vector<name> finalizers) {
void test_pacemaker::set_finalizers(const std::vector<name>& finalizers) {
_finalizers = finalizers;
};

Expand All @@ -27,7 +27,7 @@ namespace eosio::hotstuff {
_quorum_threshold = threshold;
}

void test_pacemaker::add_message_to_queue(hotstuff_message msg) {
void test_pacemaker::add_message_to_queue(const hotstuff_message& msg) {
_pending_message_queue.push_back(msg);
}

Expand Down Expand Up @@ -56,7 +56,7 @@ namespace eosio::hotstuff {
return it->second.count(node2) > 0;
}

void test_pacemaker::pipe(std::vector<test_pacemaker::hotstuff_message> messages) {
void test_pacemaker::pipe(const std::vector<test_pacemaker::hotstuff_message>& messages) {
auto itr = messages.begin();
while (itr != messages.end()) {
_pending_message_queue.push_back(*itr);
Expand Down Expand Up @@ -87,36 +87,32 @@ namespace eosio::hotstuff {
size_t new_blocks_count = 0;
size_t new_views_count = 0;

auto msg_itr = message_queue.begin();
while (msg_itr != message_queue.end()) {

name sender_id = msg_itr->first;
size_t v_index = msg_itr->second.index();
for (const auto& msg_pair : message_queue) {
const auto& [sender_id, msg] = msg_pair;
size_t v_index = msg.index();

if (msg_type == hs_all_messages || msg_type == v_index) {

if (v_index == hs_proposal) {
++proposals_count;
on_hs_proposal_msg(std::get<hs_proposal_message>(msg_itr->second), sender_id);
on_hs_proposal_msg(std::get<hs_proposal_message>(msg), sender_id);
} else if (v_index == hs_vote) {
++votes_count;
on_hs_vote_msg(std::get<hs_vote_message>(msg_itr->second), sender_id);
on_hs_vote_msg(std::get<hs_vote_message>(msg), sender_id);
} else if (v_index == hs_new_block) {
++new_blocks_count;
on_hs_new_block_msg(std::get<hs_new_block_message>(msg_itr->second), sender_id);
on_hs_new_block_msg(std::get<hs_new_block_message>(msg), sender_id);
} else if (v_index == hs_new_view) {
++new_views_count;
on_hs_new_view_msg(std::get<hs_new_view_message>(msg_itr->second), sender_id);
on_hs_new_view_msg(std::get<hs_new_view_message>(msg), sender_id);
} else {
throw std::runtime_error("unknown message variant");
}

dispatched_messages.push_back(*msg_itr);
dispatched_messages.push_back(msg_pair);
} else {
kept_messages.push_back(*msg_itr);
kept_messages.push_back(msg_pair);
}

++msg_itr;
}

_pending_message_queue.insert(_pending_message_queue.end(), kept_messages.begin(), kept_messages.end());
Expand Down Expand Up @@ -209,46 +205,30 @@ namespace eosio::hotstuff {
void test_pacemaker::send_hs_message_warning(const uint32_t sender_peer, const chain::hs_message_warning code) { }

void test_pacemaker::on_hs_proposal_msg(const hs_proposal_message& msg, name id) {
auto qc_itr = _qcc_store.begin();
while (qc_itr != _qcc_store.end()){
const name & qcc_name = qc_itr->first;
std::shared_ptr<qc_chain> & qcc_ptr = qc_itr->second;
for (const auto& [qcc_name, qcc_ptr] : _qcc_store) {
if (qcc_ptr->get_id_i() != id && is_qc_chain_active(qcc_name) && is_connected(id, qcc_ptr->get_id_i()))
qcc_ptr->on_hs_proposal_msg(0, msg);
qc_itr++;
}
}

void test_pacemaker::on_hs_vote_msg(const hs_vote_message& msg, name id) {
auto qc_itr = _qcc_store.begin();
while (qc_itr != _qcc_store.end()) {
const name & qcc_name = qc_itr->first;
std::shared_ptr<qc_chain> & qcc_ptr = qc_itr->second;
for (const auto& [qcc_name, qcc_ptr] : _qcc_store) {
if (qcc_ptr->get_id_i() != id && is_qc_chain_active(qcc_name) && is_connected(id, qcc_ptr->get_id_i()))
qcc_ptr->on_hs_vote_msg(0, msg);
qc_itr++;
}
}

void test_pacemaker::on_hs_new_block_msg(const hs_new_block_message& msg, name id) {
auto qc_itr = _qcc_store.begin();
while (qc_itr != _qcc_store.end()) {
const name & qcc_name = qc_itr->first;
std::shared_ptr<qc_chain> & qcc_ptr = qc_itr->second;
for (const auto& [qcc_name, qcc_ptr] : _qcc_store) {
if (qcc_ptr->get_id_i() != id && is_qc_chain_active(qcc_name) && is_connected(id, qcc_ptr->get_id_i()))
qcc_ptr->on_hs_new_block_msg(0, msg);
qc_itr++;
}
}

void test_pacemaker::on_hs_new_view_msg(const hs_new_view_message& msg, name id) {
auto qc_itr = _qcc_store.begin();
while (qc_itr != _qcc_store.end()){
const name & qcc_name = qc_itr->first;
std::shared_ptr<qc_chain> & qcc_ptr = qc_itr->second;
for (const auto& [qcc_name, qcc_ptr] : _qcc_store) {
if (qcc_ptr->get_id_i() != id && is_qc_chain_active(qcc_name) && is_connected(id, qcc_ptr->get_id_i()))
qcc_ptr->on_hs_new_view_msg(0, msg);
qc_itr++;
}
}

Expand Down

0 comments on commit 5c6c311

Please sign in to comment.