@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeString(nodeId); out.writeVInt(totalShards); out.writeVInt(results.size()); for (ShardOperationResult result : results) { out.writeOptionalStreamable(result); } out.writeBoolean(exceptions != null); if (exceptions != null) { int failureShards = exceptions.size(); out.writeVInt(failureShards); for (int i = 0; i < failureShards; i++) { exceptions.get(i).writeTo(out); } } }
@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); nodeId = in.readString(); totalShards = in.readVInt(); int resultsSize = in.readVInt(); results = new ArrayList<>(resultsSize); for (; resultsSize > 0; resultsSize--) { final ShardOperationResult result = in.readBoolean() ? readShardResult(in) : null; results.add(result); } if (in.readBoolean()) { int failureShards = in.readVInt(); exceptions = new ArrayList<>(failureShards); for (int i = 0; i < failureShards; i++) { exceptions.add(new BroadcastShardOperationFailedException(in)); } } else { exceptions = null; } }