0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 package org.apache.spark.network.protocol;
0019
0020 import java.util.Objects;
0021
0022 import io.netty.buffer.ByteBuf;
0023 import org.apache.commons.lang3.builder.ToStringBuilder;
0024 import org.apache.commons.lang3.builder.ToStringStyle;
0025
0026 import org.apache.spark.network.buffer.ManagedBuffer;
0027 import org.apache.spark.network.buffer.NettyManagedBuffer;
0028
0029
0030 public final class RpcResponse extends AbstractResponseMessage {
0031 public final long requestId;
0032
0033 public RpcResponse(long requestId, ManagedBuffer message) {
0034 super(message, true);
0035 this.requestId = requestId;
0036 }
0037
0038 @Override
0039 public Message.Type type() { return Type.RpcResponse; }
0040
0041 @Override
0042 public int encodedLength() {
0043
0044
0045
0046 return 8 + 4;
0047 }
0048
0049 @Override
0050 public void encode(ByteBuf buf) {
0051 buf.writeLong(requestId);
0052
0053 buf.writeInt((int) body().size());
0054 }
0055
0056 @Override
0057 public ResponseMessage createFailureResponse(String error) {
0058 return new RpcFailure(requestId, error);
0059 }
0060
0061 public static RpcResponse decode(ByteBuf buf) {
0062 long requestId = buf.readLong();
0063
0064 buf.readInt();
0065 return new RpcResponse(requestId, new NettyManagedBuffer(buf.retain()));
0066 }
0067
0068 @Override
0069 public int hashCode() {
0070 return Objects.hash(requestId, body());
0071 }
0072
0073 @Override
0074 public boolean equals(Object other) {
0075 if (other instanceof RpcResponse) {
0076 RpcResponse o = (RpcResponse) other;
0077 return requestId == o.requestId && super.equals(o);
0078 }
0079 return false;
0080 }
0081
0082 @Override
0083 public String toString() {
0084 return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
0085 .append("requestId", requestId)
0086 .append("body", body())
0087 .toString();
0088 }
0089 }