X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/7312c5fd3b74fd9cad485121bc31fc501accd355..eeab3e6cade87c1fe0a5f3d93522e12ccb9ec2ab:/rsm_client.cc?ds=sidebyside diff --git a/rsm_client.cc b/rsm_client.cc index 2e6d33d..b68ef0c 100644 --- a/rsm_client.cc +++ b/rsm_client.cc @@ -6,9 +6,10 @@ #include #include "lang/verify.h" #include "lock.h" +#include "tprintf.h" rsm_client::rsm_client(std::string dst) { - printf("create rsm_client\n"); + LOG("create rsm_client"); std::vector mems; sockaddr_in dstsock; @@ -19,7 +20,7 @@ rsm_client::rsm_client(std::string dst) { lock ml(rsm_client_mutex); VERIFY (init_members()); } - printf("rsm_client: done\n"); + LOG("rsm_client: done"); } // Assumes caller holds rsm_client_mutex @@ -28,11 +29,11 @@ void rsm_client::primary_failure() { known_mems.pop_back(); } -rsm_protocol::status rsm_client::invoke(int proc, std::string &rep, const std::string &req) { +rsm_protocol::status rsm_client::invoke(unsigned int proc, std::string &rep, const std::string &req) { int ret = 0; lock ml(rsm_client_mutex); while (1) { - printf("rsm_client::invoke proc %x primary %s\n", proc, primary.c_str()); + LOG("rsm_client::invoke proc " << std::hex << proc << " primary " << primary); handle h(primary); ml.unlock(); @@ -44,54 +45,51 @@ rsm_protocol::status rsm_client::invoke(int proc, std::string &rep, const std::s if (!cl) goto prim_fail; - printf("rsm_client::invoke proc %x primary %s ret %d\n", proc, - primary.c_str(), ret); + LOG("rsm_client::invoke proc " << std::hex << proc << " primary " << primary << " ret " << std::dec << ret); if (ret == rsm_client_protocol::OK) break; if (ret == rsm_client_protocol::BUSY) { - printf("rsm is busy %s\n", primary.c_str()); + LOG("rsm is busy " << primary); sleep(3); continue; } if (ret == rsm_client_protocol::NOTPRIMARY) { - printf("primary %s isn't the primary--let's get a complete list of mems\n", - primary.c_str()); + LOG("primary " << primary << " isn't the primary--let's get a complete list of mems"); if (init_members()) continue; } prim_fail: - printf("primary %s failed ret %d\n", primary.c_str(), ret); + LOG("primary " << primary << " failed ret " << std::dec << ret); primary_failure(); - printf ("rsm_client::invoke: retry new primary %s\n", primary.c_str()); + LOG("rsm_client::invoke: retry new primary " << primary); } return ret; } bool rsm_client::init_members() { - printf("rsm_client::init_members get members!\n"); + LOG("rsm_client::init_members get members!"); handle h(primary); - int ret; + int ret = rsm_client_protocol::ERR; rpcc *cl; { adopt_lock ml(rsm_client_mutex); ml.unlock(); cl = h.safebind(); - if (cl) { + if (cl) ret = cl->call_timeout(rsm_client_protocol::members, rpcc::to(1000), known_mems, 0); - } ml.lock(); } if (cl == 0 || ret != rsm_protocol::OK) return false; if (known_mems.size() < 1) { - printf("rsm_client::init_members do not know any members!\n"); + LOG("rsm_client::init_members do not know any members!"); VERIFY(0); } primary = known_mems.back(); known_mems.pop_back(); - printf("rsm_client::init_members: primary %s\n", primary.c_str()); + LOG("rsm_client::init_members: primary " << primary); return true; }