package org.torrent.internal.data; import org.torrent.internal.util.Range; import org.torrent.internal.util.Validator; public class BTPart { private final int start; private final int index; private final int length; public BTPart(int index, int start, int length) { super(); Validator.isTrue(index >= 0, "Index < 0"); Validator.isTrue(length >= 0, "Length < 0"); Validator.isTrue(start >= 0, "Start < 0"); this.index = index; this.length = length; this.start = start; } public int getStart() { return start; } public int getIndex() { return index; } public int getLength() { return length; } @Override public int hashCode() { return start ^ index ^ length; } @Override public boolean equals(Object obj) { if (obj instanceof BTPart) { BTPart o = (BTPart) obj; return start == o.start && index == o.index && length == o.length; } return false; } @Override public String toString() { return "[index = " + index + ", start = " + start + ", length = " + length + "]"; } public Range getRange() { return Range.getRangeByLength(start, length); } }