0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 package org.apache.spark.network.shuffle.protocol;
0019
0020 import java.util.Arrays;
0021 import java.util.Objects;
0022
0023 import io.netty.buffer.ByteBuf;
0024 import org.apache.commons.lang3.builder.ToStringBuilder;
0025 import org.apache.commons.lang3.builder.ToStringStyle;
0026
0027 import org.apache.spark.network.protocol.Encoders;
0028
0029
0030 import static org.apache.spark.network.shuffle.protocol.BlockTransferMessage.Type;
0031
0032
0033 public class RemoveBlocks extends BlockTransferMessage {
0034 public final String appId;
0035 public final String execId;
0036 public final String[] blockIds;
0037
0038 public RemoveBlocks(String appId, String execId, String[] blockIds) {
0039 this.appId = appId;
0040 this.execId = execId;
0041 this.blockIds = blockIds;
0042 }
0043
0044 @Override
0045 protected Type type() { return Type.REMOVE_BLOCKS; }
0046
0047 @Override
0048 public int hashCode() {
0049 return Objects.hash(appId, execId) * 41 + Arrays.hashCode(blockIds);
0050 }
0051
0052 @Override
0053 public String toString() {
0054 return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
0055 .append("appId", appId)
0056 .append("execId", execId)
0057 .append("blockIds", Arrays.toString(blockIds))
0058 .toString();
0059 }
0060
0061 @Override
0062 public boolean equals(Object other) {
0063 if (other != null && other instanceof RemoveBlocks) {
0064 RemoveBlocks o = (RemoveBlocks) other;
0065 return Objects.equals(appId, o.appId)
0066 && Objects.equals(execId, o.execId)
0067 && Arrays.equals(blockIds, o.blockIds);
0068 }
0069 return false;
0070 }
0071
0072 @Override
0073 public int encodedLength() {
0074 return Encoders.Strings.encodedLength(appId)
0075 + Encoders.Strings.encodedLength(execId)
0076 + Encoders.StringArrays.encodedLength(blockIds);
0077 }
0078
0079 @Override
0080 public void encode(ByteBuf buf) {
0081 Encoders.Strings.encode(buf, appId);
0082 Encoders.Strings.encode(buf, execId);
0083 Encoders.StringArrays.encode(buf, blockIds);
0084 }
0085
0086 public static RemoveBlocks decode(ByteBuf buf) {
0087 String appId = Encoders.Strings.decode(buf);
0088 String execId = Encoders.Strings.decode(buf);
0089 String[] blockIds = Encoders.StringArrays.decode(buf);
0090 return new RemoveBlocks(appId, execId, blockIds);
0091 }
0092 }