Ejemplo n.º 1
0
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;
    }
}
Ejemplo n.º 2
0
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());
    }
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
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;
}
Ejemplo n.º 5
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);
    }
}