X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/eb3d5c6416c0f0d1cad35e52af3231de7866fea8..c279db4240a3a3c30f069ab9dea8055cf94280da:/paxos.cc diff --git a/paxos.cc b/paxos.cc index cb32e36..2c7e79a 100644 --- a/paxos.cc +++ b/paxos.cc @@ -1,15 +1,17 @@ #include "paxos.h" -#include "handle.h" + +using namespace std::placeholders; paxos_change::~paxos_change() {} bool isamember(const node_t & m, const nodes_t & nodes) { - return find(nodes.begin(), nodes.end(), m) != nodes.end(); + return std::find(nodes.begin(), nodes.end(), m) != nodes.end(); } // check if l2 contains a majority of the elements of l1 bool majority(const nodes_t & l1, const nodes_t & l2) { - auto overlap = (size_t)count_if(l1.begin(), l1.end(), std::bind(isamember, _1, l2)); + auto overlap = (size_t)std::count_if( + l1.begin(), l1.end(), std::bind(isamember, _1, l2)); return overlap >= (l1.size() >> 1) + 1; } @@ -48,7 +50,7 @@ bool proposer_acceptor::run(unsigned instance, const nodes_t & cur_nodes, const } stable = false; bool r = false; - proposal.n = max(promise.n, proposal.n) + 1; + proposal.n = std::max(promise.n, proposal.n) + 1; nodes_t accepts; value_t v; if (prepare(instance, accepts, cur_nodes, v)) { @@ -91,8 +93,7 @@ bool proposer_acceptor::prepare(unsigned instance, nodes_t & accepts, prepareres res; prop_t highest_n_a{0, ""}; for (auto i : nodes) { - handle h(i); - rpcc *r = h.safebind(); + auto r = rpcc::bind_cached(i); if (!r) continue; auto status = (paxos_protocol::status)r->call_timeout( @@ -121,8 +122,7 @@ bool proposer_acceptor::prepare(unsigned instance, nodes_t & accepts, void proposer_acceptor::accept(unsigned instance, nodes_t & accepts, const nodes_t & nodes, const value_t & v) { for (auto i : nodes) { - handle h(i); - rpcc *r = h.safebind(); + auto r = rpcc::bind_cached(i); if (!r) continue; bool accept = false; @@ -135,8 +135,7 @@ void proposer_acceptor::accept(unsigned instance, nodes_t & accepts, void proposer_acceptor::decide(unsigned instance, const nodes_t & accepts, const value_t & v) { for (auto i : accepts) { - handle h(i); - rpcc *r = h.safebind(); + auto r = rpcc::bind_cached(i); if (!r) continue; int res = 0;