package org.torrent.internal.transfer; import org.torrent.internal.data.TorrentMetaInfo; import org.torrent.internal.data.TorrentMetaInfo.Piece; import org.torrent.internal.peer.connection.BTConnection; public class DWRequestProvider extends AbstractRequestProvider { private final DistributionWatcher distWatcher; public DWRequestProvider(TorrentMetaInfo contentInfo, ContentWatcher watcher, int partLength, int maxRequestsPerConnection, DistributionWatcher distWatcher) { super(contentInfo, watcher, partLength, maxRequestsPerConnection); this.distWatcher = distWatcher; } public DWRequestProvider(TorrentMetaInfo contentInfo, ContentWatcher watcher, int partLength, RequestLimiter limiter, DistributionWatcher distWatcher) { super(contentInfo, watcher, partLength, limiter); this.distWatcher = distWatcher; } @Override protected void completelyRequested(org.torrent.internal.data.TorrentMetaInfo.Piece piece) { distWatcher.markNotNeeded(piece); } @Override protected org.torrent.internal.data.TorrentMetaInfo.Piece getBestIndex(BTConnection con) { return distWatcher.getBestPieceForRequest(con); } @Override protected void notCompletelyRequested( org.torrent.internal.data.TorrentMetaInfo.Piece piece) { distWatcher.markNeeded(piece); } @Override protected boolean hasOpenRequests(BTConnection con) { return distWatcher.hasPiecesForRequest(con); } @Override protected boolean hasNoRequiredParts(Piece piece) { return distWatcher.hasNoRequestsFor(piece); } }