void C2SHandler::sendFailedResponse(const rpc::MessageBody& request_body, int err_code, const char* err_msg) { try { string data; rpc::FailedResponse failedresp; failedresp.set_err_code(err_code); failedresp.set_err_msg(err_msg); failedresp.SerializeToString(&data); rpc::MessageBody mb; mb.set_op(rpc::OP_RESPONSE_FAILED); mb.set_cmd(request_body.cmd()); mb.set_seq(request_body.seq()); for (int i=0; i<request_body.router_size(); ++i) mb.add_router(request_body.router(i)); mb.set_data(data); base::packet::Packet out; mb.SerializeWithCachedSizesToArray((uint8_t*)out.extendTailConinuous(mb.ByteSize())); write(base::packet::Header(out.getSize()), out); } catch (exception& e) { LOG(error) << "send response failed!" << EXCEPTION_DIAG_INFO(e) << ENDL; } }
void HttpMethod::call() { try { onCall(); } catch (base::AppException& e) { LOG(error, EXCEPTION_DIAG_INFO(e)); replyError(400, e.msg()); } catch (exception& e) { LOG(error, EXCEPTION_DIAG_INFO(e)); replyError(500, e.what()); } }
int main(int argc,char**argv) { try { sg::CommandLineParser cmdline(argc, argv); cmdline.addIntOption("routing.port,p", "routing on specified port"); cmdline.addStringOption("config_server.address", "config server address"); group_messaging_server::GroupMessagingService gms(cmdline); gms.start(); } catch (exception& e) { LOG(error, EXCEPTION_DIAG_INFO(e)); } LOG(info, "exit."); return 0; }
int main(int argc,char**argv) { try { if (argc != 2) { printf("usage: ./client ip:port\n"); exit(-1); } sg::Service client_svc; UdpClient cn(argv[1], client_svc); if (!cn.connectServer()) { LOG(error, "connect to 127.0.0.1:1234 failed"); return -1; } echo::EchoTestRequest echo_req; echo_req.set_msg("hello world!"); echo::EchoTestResponse echo_resp; cn.syncRequest<echo::EchoTest>(echo_req, &echo_resp); LOG(error, "receive SyncRequest " << echo_resp.msg().c_str()); cn.asynRequest<echo::EchoTest>(echo_req, boost::bind(&test_call, _1)); sleep(100); } catch (exception& e) { LOG(error, EXCEPTION_DIAG_INFO(e)); } return 0; }
void C2SHandler::onPacketArrive(const base::packet::Header& header, base::packet::Packet& body) { LOG(trace) << "c2s packet arrive: " << header << ENDL; try { PacketInputStream packetinput(body); ::google::protobuf::io::CodedInputStream in(&packetinput); auto_ptr<rpc::MessageBody> mb(new rpc::MessageBody); if (!mb->ParseFromCodedStream(&in)) THROW_RPC_CALL_EXCEPTION(rpc::EC_RPC_PARSE_ERROR, "parse error!"); if (scheduler_) { scheduler_->invokeStub(boost::static_pointer_cast<C2SHandler>(this->shared_from_this()), mb); } } catch (exception& e) { LOG(error) << EXCEPTION_DIAG_INFO(e); } }