#include <utime.h>
+#include "include/config.h"
+#undef dout
+#define dout(l) if (l<=g_conf.debug) cout << "client" << whoami << " "
+
+
+
// cons/des
Client::Client(MDCluster *mdc, int id, Messenger *m)
}
+void Client::init() {
+ // incoming message go through serializer
+ messenger->set_dispatcher(serial_messenger);
+}
// -------------------
// fs ops
req->set_caller_uid(getuid());
req->set_caller_gid(getgid());
- reply = (MClientReply*)serial_messenger->sendrecv(req, MSG_ADDR_MDS(0));
+ reply = (MClientReply*)serial_messenger->sendrecv(req, MSG_ADDR_MDS(0), MDS_PORT_SERVER);
int res = reply->get_result();
+ dout(10) << "lstat res is " << res << endl;
if (res != 0) return res;
//Transfer information from reply to stbuf
req->set_iarg( (int)mode );
- reply = (MClientReply*)serial_messenger->sendrecv(req, MSG_ADDR_MDS(0));
+ reply = (MClientReply*)serial_messenger->sendrecv(req, MSG_ADDR_MDS(0), MDS_PORT_SERVER);
return reply->get_result();
}
req->set_iarg( (int)uid );
req->set_iarg2( (int)gid );
- reply = (MClientReply*)serial_messenger->sendrecv(req, MSG_ADDR_MDS(0));
+ reply = (MClientReply*)serial_messenger->sendrecv(req, MSG_ADDR_MDS(0), MDS_PORT_SERVER);
return reply->get_result();
}
req->set_targ( buf->modtime );
req->set_targ2( buf->actime );
- reply = (MClientReply*)serial_messenger->sendrecv(req, MSG_ADDR_MDS(0));
+ reply = (MClientReply*)serial_messenger->sendrecv(req, MSG_ADDR_MDS(0), MDS_PORT_SERVER);
return reply->get_result();
}
// i better be expecting it
assert(waiting_for_reply);
- cout << "dispatch got " << reply << ", waking up waiter" << endl;
+ cout << "serializer: dispatch got " << reply << ", waking up waiter" << endl;
reply = m;
waiter.Post();
}
void CheesySerializer::send(Message *m, msg_addr_t dest, int port, int fromport)
{
+ cout << "serializer: send " << m << endl;
messenger->send_message(m, dest, port, fromport);
}
Message *CheesySerializer::sendrecv(Message *m, msg_addr_t dest, int port, int fromport)
{
+ cout << "serializer: sendrecv " << m << endl;
messenger->send_message(m, dest, port, fromport);
waiting_for_reply = true;
+ cout << "serializer: sendrecv waiting " << endl;
waiter.Wait();
+ cout << "serializer: sendrecv got " << reply << endl;
return reply;
}
while (1) {
awake = false;
sem.Wait();
+ dout(1) << "thread woke up" << endl;
if (shutdown) break;
fakemessenger_do_loop();
whoami = me;
directory[ whoami ] = this;
+ cout << "fakemessenger " << whoami << " messenger is " << this << endl;
+
string name;
name = "m.";
name += MSG_ADDR_TYPE(whoami);
// wake up loop?
if (!awake) {
- dout(1) << "waking up fakemessenger" << endl;
+ dout(1) << "waking up fakemessenger thread" << endl;
awake = true;
sem.Post();
}