+ (event == null ? "" : "&event=" + event) + "&numwant=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ request + "&compact=1" + "&key=" + key //$NON-NLS-1$ //$NON-NLS-2$
+ (trackerID != null ? "&trackerid=" + trackerID : ""); //$NON-NLS-1$ //$NON-NLS-2$
TorrentConfiguration.debug("Querying the tracker at " + link); //$NON-NLS-1$
URL url = new URL(link);
BEncodedDictionary dictionary = Decode.bDecode(url.openStream());
if (event != null && event.equals("stopped")) { //$NON-NLS-1$
return;
}
String failure = (String) dictionary.get("failure reason"); //$NON-NLS-1$
if (failure != null) {
fireTrackerErrorEvent(failure);
TorrentConfiguration.debug("The client could not connect to the tracker, the reason provided was - " + failure); //$NON-NLS-1$
return;
}
timeout = ((Long) dictionary.get("interval")).intValue() * 1000; //$NON-NLS-1$
if (trackerID == null) {
trackerID = (String) dictionary.get("tracker id"); //$NON-NLS-1$
}
Long number = (Long) dictionary.get("completed"); //$NON-NLS-1$
seeders = number != null ? number.intValue() : -1;
number = (Long) dictionary.get("incompleted"); //$NON-NLS-1$
peers = number != null ? number.intValue() : -1;
Object peersList = dictionary.get("peers"); //$NON-NLS-1$
if (peersList instanceof List) {
TorrentConfiguration.debug("No peers were returned"); //$NON-NLS-1$
return;
}