Example #1
0
void handleOp(zmq::socket_t &socket, int opCode) {
    std::string s_req, trace, line;
    std::cout<<"Trace: ";
    std::getline(std::cin, trace);
    Request req;
    Id id;
    Person person;
    Request_Header_Type type;
    switch (opCode) {
        case 1:
            type = Request_Header_Type_LOOKUP;
            std::cout<<"id: ";
            line.clear();
            std::getline(std::cin, line);
            id = makeId(fromString<int>(line));
            req = makeRequest(type, id, person, false, trace);
            break;
        case 3:
            type = Request_Header_Type_REMOVE;
            std::cout<<"id: ";
            line.clear();
            std::getline(std::cin, line);
            id = makeId(fromString<int>(line));
            req = makeRequest(type, id, person, false, trace);
            break;
        case 2:
            {
                type = Request_Header_Type_INSERT;
                std::cout<<"id: ";
                line.clear();
                std::getline(std::cin, line);
                id = makeId(fromString<int>(line));
                line.clear();
                std::cout<<"Name: ";
                std::getline(std::cin, line);
                std::string ph, ovr;
                std::cout<<"Phone: ";
                std::getline(std::cin, ph);
                std::cout<<"Overwrite: (y/n) ";
                std::getline(std::cin, ovr);
                person = makePerson(line, ph);
                req = makeRequest(type, id, person, ovr.compare("y") == 0,
                        trace);
                break;
            }
    };
    std::cout<<"Request: "<<requestToString(req);
    TRACE(std::cout, "");
    req.SerializeToString(&s_req);
    zmq::message_t z_req(s_req.size());
    memcpy(z_req.data(), (void *)s_req.data(), s_req.size());
    socket.send(z_req);
    zmq::message_t z_resp;
    socket.recv(&z_resp);
    std::string s_resp((char *)z_resp.data(), z_resp.size());
    Response resp;
    resp.ParseFromString(s_resp);
    std::cout<<"Response = "<<responseToString(resp);
}
Example #2
0
void TcpClient::OnPackage(const char *buf, size_t len)
{
	if (buf == NULL || len <= 0)
		return;

	TopMessage msg;
	if(!msg.ParseFromArray(buf, len))
		return;

	__int64 seq = msg.seq();
	switch (msg.msg_type())
	{
	default:
		break;
	case RESPONSE:
		{
			switch (msg.sub_msg_type())
			{
			default:
				break;
			case LOGIN:
				{
					/*Response *pLoginResponse = new Response;
					if (!pLoginResponse->ParseFromString(msg.data()))
					{
						delete pLoginResponse;
						return;
					}
					ResultNetData *pResultNetData = new ResultNetData;
					pResultNetData->nSeq = seq;
					pResultNetData->pResponse = pLoginResponse;
					lock_guard<mutex> lg(G.m_netQueueMutex);
					G.m_listNetQueue.push_back(pResultNetData);
					G.m_nServerDate = msg.timestamp();*/

					Response loginResponse;
					if (!loginResponse.ParseFromString(msg.data()))
					{
						return;
					}
					G.m_nServerDate = msg.timestamp();

					if (loginResponse.response_code() == OK)
					{
						G.m_nServerDate = msg.timestamp();
						G.m_nStatus = STATUS_AUTHED;
						for (int idx = 0; idx < loginResponse.data_size(); idx++)
						{
							Data crdata = loginResponse.data(idx);
							ProtobufResponseData pbrd;

							if (idx == 0)
							{
								if(crdata.type() == PROTOBUF)
								{
									if (!pbrd.ParseFromString(crdata.value()))
									continue;
								}
								else
									continue;

								for(int i = 0; i < pbrd.rowvalue_size(); i++)
								{
									RowValue rowValue = pbrd.rowvalue(i);
									for(int j = 0; j < rowValue.columnvalue_size(); j++)
									{
										RowValue_ColumnValue columnValue = rowValue.columnvalue(j);
										if (pbrd.columninfo(j).name() == "money")
										{

										}
										else if (pbrd.columninfo(j).name() == "username")
										{
											// G.m_strUserName = columnValue.stringvalue();
										}
										else if (pbrd.columninfo(j).name() == "userid")
										{
											G.m_strUserId = columnValue.stringvalue();
										}
									}
								}
							}
						}
						cocos2d::Director::getInstance()->getScheduler()->performFunctionInCocosThread([]
						{
							//G.m_mapReserveData.find(nSeq);
							auto scene = CardScene::createScene();
							cocos2d::Director::getInstance()->replaceScene(scene);
						}
						); 
					}
					else if (loginResponse.response_code() == NOT_FOUND)
					{

					}
				}
				break;
			case POST:
				{
					Response *pResponse = new Response;
					if (!pResponse->ParseFromString(msg.data()))
					{
						delete pResponse;
						return;
					}
					ResultNetData *pResultNetData = new ResultNetData;
					pResultNetData->nSeq = seq;
					pResultNetData->pResponse = pResponse;
					lock_guard<mutex> lg(G.m_netQueueMutex);
					G.m_listNetQueue.push_back(pResultNetData);
					G.m_nServerDate = msg.timestamp();
				}
				break;
			}
		}
		break;
	}

}
Example #3
0
Response kConnection::receive_response() {
	Response r;
	auto s = readmessage();
	r.ParseFromString(s);
	return r;
}