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
0031
0032
0033
0034
0035
0036 public final class ChunkFetchSuccess extends AbstractResponseMessage {
0037 public final StreamChunkId streamChunkId;
0038
0039 public ChunkFetchSuccess(StreamChunkId streamChunkId, ManagedBuffer buffer) {
0040 super(buffer, true);
0041 this.streamChunkId = streamChunkId;
0042 }
0043
0044 @Override
0045 public Message.Type type() { return Type.ChunkFetchSuccess; }
0046
0047 @Override
0048 public int encodedLength() {
0049 return streamChunkId.encodedLength();
0050 }
0051
0052
0053 @Override
0054 public void encode(ByteBuf buf) {
0055 streamChunkId.encode(buf);
0056 }
0057
0058 @Override
0059 public ResponseMessage createFailureResponse(String error) {
0060 return new ChunkFetchFailure(streamChunkId, error);
0061 }
0062
0063
0064 public static ChunkFetchSuccess decode(ByteBuf buf) {
0065 StreamChunkId streamChunkId = StreamChunkId.decode(buf);
0066 buf.retain();
0067 NettyManagedBuffer managedBuf = new NettyManagedBuffer(buf.duplicate());
0068 return new ChunkFetchSuccess(streamChunkId, managedBuf);
0069 }
0070
0071 @Override
0072 public int hashCode() {
0073 return Objects.hash(streamChunkId, body());
0074 }
0075
0076 @Override
0077 public boolean equals(Object other) {
0078 if (other instanceof ChunkFetchSuccess) {
0079 ChunkFetchSuccess o = (ChunkFetchSuccess) other;
0080 return streamChunkId.equals(o.streamChunkId) && super.equals(o);
0081 }
0082 return false;
0083 }
0084
0085 @Override
0086 public String toString() {
0087 return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
0088 .append("streamChunkId", streamChunkId)
0089 .append("buffer", body())
0090 .toString();
0091 }
0092 }