55 void TMPWorker::Init(
int fd,
unsigned workerN)
57 fS.reset(
new TSocket(fd,
"MPsock"));
60 fId =
"W" + std::to_string(GetNWorker()) +
"|P" + std::to_string(GetPid());
67 MPCodeBufPair msg = MPRecv(fS.get());
68 if (msg.first == MPCode::kRecvError) {
69 Error(
"TMPWorker::Run",
"Lost connection to client\n");
76 TMPWorker::HandleInput(msg);
89 void TMPWorker::HandleInput(MPCodeBufPair &msg)
91 unsigned code = msg.first;
93 std::string reply = fId;
94 if (code == MPCode::kMessage) {
97 MPSend(fS.get(), MPCode::kMessage, reply.c_str());
98 }
else if (code == MPCode::kError) {
101 MPSend(fS.get(), MPCode::kMessage, reply.c_str());
102 }
else if (code == MPCode::kShutdownOrder || code == MPCode::kFatalError) {
104 MPSend(fS.get(), MPCode::kShutdownNotice, reply.c_str());
107 reply +=
": unknown code received. code=" + std::to_string(code);
108 MPSend(fS.get(), MPCode::kError, reply.c_str());
115 void TMPWorker::SendError(
const std::string& errmsg,
unsigned int errcode)
117 std::string reply = fId +
": " + errmsg;
118 MPSend(GetSocket(), errcode, reply.c_str());