#include <unistd.h>
#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<std::string> mems;
sockaddr_in dstsock;
lock ml(rsm_client_mutex);
VERIFY (init_members());
}
- printf("rsm_client: done\n");
+ LOG("rsm_client: done");
}
// Assumes caller holds rsm_client_mutex
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();
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;
}