void StormService::onRequest(const Connection& conn, const char* buffer, uint32_t len) { int32_t ret = 0; RpcRequest req; RpcResponse resp; // 解析RpcRequest if (!req.ParseFromArray(buffer, len)) { STORM_ERROR << "rpc request error"; m_loop->close(conn.id, CloseType_PacketError); return; } // 业务逻辑 ret = onRpcRequest(conn, 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* data = PacketProtocolLen::encode(resp); m_loop->send(conn.id, data->getHead(), data->getSize()); delete data; }