int main(int argc, char **argv) { using namespace ucorf; const char* url = "tcp://127.0.0.1:8080"; if (argc > 1) url = argv[1]; Client client; client.SetUrl(url); UcorfEchoServiceStub stub(&client); // go [&]{ //retry: // EchoRequest request; // request.set_code(1); // EchoResponse response; // // boost_ec ec = stub.Echo(request, &response); // if (ec) { // cout << "rpc call error: " << ec.message() << endl; // } else { // cout << "rpc call success, response.code=" << response.code() << endl; // } // // co_sleep(1000); // goto retry; // }; go [&]{ retry: EchoRequest request; request.set_code(1); boost_ec ec; std::shared_ptr<EchoResponse> rsp = stub.Echo(request, &ec); if (ec) { cout << "rpc call error: " << ec.message() << endl; } else { cout << "rpc call success, response.code=" << rsp->code() << endl; } co_sleep(1000); goto retry; }; co_sched.RunLoop(); return 0; }
int main() { Channel* channel = new Channel(); channel->Connect("127.0.0.1", 8888, true); for(int i = 0; i < 1000000; ++i){ channel->Update(); Controller* controller = new Controller(); EchoRequest* request = new EchoRequest(); EchoResponse* response = new EchoResponse(); Closure* closure = new Closure(controller, request, response); EchoService_Stub* stub = new EchoService_Stub(channel); request->set_message("hello"); stub->Echo(controller, request, response, closure); } uv_run(uv_default_loop(), UV_RUN_DEFAULT); }
/* * Check that method that fail return correctly */ void RpcChannelTest::testFailedEcho() { m_request.set_data("foo"); m_stub->FailedEcho( &m_controller, &m_request, &m_reply, NewSingleCallback(this, &RpcChannelTest::FailedEchoComplete)); m_ss.Run(); }
void Client::loop() { EchoRequest request; request.set_msg("带着相机去旅行"); //同步调用 EchoResponse response; int ret = g_prx->Echo(request, response); //cout << response.msg() << endl; // LOG("ret %d\n", ret); // LOG("msg len %lu\n", response.msg().size()); //异步调用 ServiceProxyCallBackPtr cb(new GameServiceProxyCB); g_prx->async_Echo(cb, request); //单向调用 g_prx->async_Echo(NULL, request); //usleep(10); }
int DemosvrClient::Echo(const string & sMsgIn, string & sMsgOut, int & iVar) { int iRet = 0; EchoRequest req; EchoResponse resp; req.set_msg(sMsgIn); resp.set_msg(sMsgIn); resp.set_var(999); iRet = ((DemosvrCliProto &)GetCliProto()).Echo(req, resp); if (iRet < 0) { // haysvr err HayLog(LOG_ERR, "%s %s cliproto fail. ret[%d]", __FILE__, __PRETTY_FUNCTION__, iRet); return -1; } else if ((iRet=GetCliProto().GetResponseCode()) < 0) { // user err HayLog(LOG_ERR, "%s %s fail. ret[%d]", __FILE__, __PRETTY_FUNCTION__, iRet); return -2; } // succ sMsgOut = resp.msg(); iVar = resp.var(); return 0; }
virtual bool Echo(EchoRequest & request, EchoResponse & response) { // 处理请求 response.set_code(request.code()); return true; }
int DemosvrService::Echo(const EchoRequest & req, EchoResponse & resp) { resp.set_msg(req.msg()+" hayes!"); resp.set_var(998); return 0; }
/* * Check stream requests work */ void RpcChannelTest::testStreamRequest() { m_request.set_data("foo"); m_stub->Stream(NULL, &m_request, NULL, NULL); m_ss.Run(); }
void RpcChannelTest::EchoComplete() { m_ss.Terminate(); OLA_ASSERT_FALSE(m_controller.Failed()); OLA_ASSERT_EQ(m_reply.data(), m_request.data()); }