| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| option java_package = "org.apache.hadoop.ipc.protobuf"; |
| option java_outer_classname = "RpcPayloadHeaderProtos"; |
| option java_generate_equals_and_hash = true; |
| package hadoop.common; |
| |
| /** |
| * This is the rpc payload header. It is sent with every rpc call. |
| * |
| * The format of RPC call is as follows: |
| * +-----------------------------------------------------+ |
| * | Rpc length in bytes | |
| * +-----------------------------------------------------+ |
| * | RpcPayloadHeader - serialized delimited ie has len | |
| * +-----------------------------------------------------+ |
| * | RpcRequest Payload | |
| * +-----------------------------------------------------+ |
| * |
| */ |
| |
| /** |
| * RpcKind determine the rpcEngine and the serialization of the rpc payload |
| */ |
| enum RpcKindProto { |
| RPC_BUILTIN = 0; // Used for built in calls by tests |
| RPC_WRITABLE = 1; // Use WritableRpcEngine |
| RPC_PROTOCOL_BUFFER = 2; // Use ProtobufRpcEngine |
| } |
| |
| enum RpcPayloadOperationProto { |
| RPC_FINAL_PAYLOAD = 0; // The final payload |
| RPC_CONTINUATION_PAYLOAD = 1; // not implemented yet |
| RPC_CLOSE_CONNECTION = 2; // close the rpc connection |
| } |
| |
| message RpcPayloadHeaderProto { // the header for the RpcRequest |
| optional RpcKindProto rpcKind = 1; |
| optional RpcPayloadOperationProto rpcOp = 2; |
| required uint32 callId = 3; // each rpc has a callId that is also used in response |
| } |
| |
| enum RpcStatusProto { |
| SUCCESS = 0; // RPC succeeded |
| ERROR = 1; // RPC Failed |
| FATAL = 2; // Fatal error - connection is closed |
| } |
| |
| /** |
| * Rpc Response Header |
| * - If successfull then the Respose follows after this header |
| * - length (4 byte int), followed by the response |
| * - If error or fatal - the exception info follow |
| * - length (4 byte int) Class name of exception - UTF-8 string |
| * - length (4 byte int) Stacktrace - UTF-8 string |
| * - if the strings are null then the length is -1 |
| * In case of Fatal error then the respose contains the Serverside's IPC version |
| */ |
| message RpcResponseHeaderProto { |
| required uint32 callId = 1; // callId used in Request |
| required RpcStatusProto status = 2; |
| optional uint32 serverIpcVersionNum = 3; // in case of an fatal IPC error |
| } |