Ensure Thracker url are used in order

This commit is contained in:
anthonyraymond 2018-01-08 00:12:16 +01:00
parent 9ebfeba1f1
commit 362d1d1197
2 changed files with 7 additions and 2 deletions

View file

@ -21,6 +21,7 @@ import java.io.IOException;
import java.net.URI;
import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@ -31,7 +32,10 @@ public class NewTrackerClient {
private final TrackerClientUriProvider trackerClientUriProvider;
public NewTrackerClient(final MockedTorrent torrent) {
final Set<URI> trackerURIs = torrent.getAnnounceList().stream().flatMap(Collection::stream).collect(Collectors.toSet());
final List<URI> trackerURIs = torrent.getAnnounceList().stream() // Use a list to keep it ordered
.sequential()
.flatMap(Collection::stream)
.collect(Collectors.toList());
this.trackerClientUriProvider = new TrackerClientUriProvider(trackerURIs);
}

View file

@ -6,6 +6,7 @@ import org.slf4j.LoggerFactory;
import java.net.URI;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
class TrackerClientUriProvider {
@ -14,7 +15,7 @@ class TrackerClientUriProvider {
private final Iterator<URI> addressIterator;
private URI currentURI = null;
TrackerClientUriProvider(@SuppressWarnings("TypeMayBeWeakened") final Set<URI> trackersURI) {
TrackerClientUriProvider(@SuppressWarnings("TypeMayBeWeakened") final List<URI> trackersURI) {
// TODO: sorted(new PreferHTTPSComparator())
this.addressIterator = Iterators.cycle(trackersURI);
}