void SocketListener::doRequest(Connection::ptr pack) { int ret = 0; RpcRequest req; RpcResponse resp; //解析RpcRequest if (!req.ParseFromString(pack->buffer)) { STORM_ERROR << "rpc request error"; m_sockServer->close(pack->id, CloseType_Packet_Error); return; } //业务逻辑 ret = doRpcRequest(pack, req, resp); if (req.invoke_type() == InvokeType_OneWay) { return; } //回包 resp.set_ret(ret); resp.set_proto_id(req.proto_id()); resp.set_request_id(req.request_id()); IOBuffer::ptr respBuf = FrameProtocolLen::encode(resp); m_sockServer->send(pack->id, respBuf); }