Skip to content

Commit

Permalink
DHT operations timeout in seconds
Browse files Browse the repository at this point in the history
Refactor
  • Loading branch information
aldenml committed Feb 22, 2016
1 parent 239ce84 commit 48381cb
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 21 deletions.
22 changes: 16 additions & 6 deletions src/main/java/com/frostwire/jlibtorrent/DHT.java
Expand Up @@ -41,7 +41,12 @@ public boolean running() {
return s.isDHTRunning();
}

public Entry get(Sha1Hash sha1, long timeout) {
/**
* @param sha1
* @param timeout in seconds
* @return
*/
public Entry get(Sha1Hash sha1, int timeout) {
final Sha1Hash target = sha1;
final Entry[] result = {null};
final CountDownLatch signal = new CountDownLatch(1);
Expand Down Expand Up @@ -70,7 +75,7 @@ public void alert(Alert<?> alert) {
s.dhtGetItem(target);

try {
signal.await(timeout, TimeUnit.MILLISECONDS);
signal.await(timeout, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// ignore
}
Expand All @@ -84,7 +89,12 @@ public Sha1Hash put(Entry entry) {
return s.dhtPutItem(entry);
}

public ArrayList<TcpEndpoint> getPeers(Sha1Hash sha1, long timeout) {
/**
* @param sha1
* @param timeout in seconds
* @return
*/
public ArrayList<TcpEndpoint> getPeers(Sha1Hash sha1, int timeout) {
final Sha1Hash target = sha1;
final Object[] result = {new ArrayList<TcpEndpoint>()};
final CountDownLatch signal = new CountDownLatch(1);
Expand Down Expand Up @@ -113,7 +123,7 @@ public void alert(Alert<?> alert) {
s.dhtGetPeers(target);

try {
signal.await(timeout, TimeUnit.MILLISECONDS);
signal.await(timeout, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// ignore
}
Expand All @@ -131,7 +141,7 @@ public void announce(Sha1Hash sha1) {
s.dhtAnnounce(sha1);
}

public MutableItem mget(final byte[] key, final byte[] salt, long timeout) {
public MutableItem mget(final byte[] key, final byte[] salt, int timeout) {
final MutableItem[] result = {null};
final CountDownLatch signal = new CountDownLatch(1);

Expand Down Expand Up @@ -163,7 +173,7 @@ public void alert(Alert<?> alert) {
s.dhtGetItem(key, salt);

try {
signal.await(timeout, TimeUnit.MILLISECONDS);
signal.await(timeout, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// ignore
}
Expand Down
15 changes: 7 additions & 8 deletions src/main/java/com/frostwire/jlibtorrent/Session.java
Expand Up @@ -84,8 +84,8 @@ public Session() {
this(new SettingsPack(), false, null);
}

public Session(String iface, int port, int retries, boolean logging, AlertListener listener) {
this(addSettings(new SettingsPack(), iface, port, retries), logging, listener);
public Session(String ip, int port, boolean logging, AlertListener listener) {
this(createSettings(ip, port), logging, listener);
}

public session getSwig() {
Expand Down Expand Up @@ -1075,14 +1075,13 @@ private static session createSession(SettingsPack settings, boolean logging) {
return new session(sp);
}

private static SettingsPack addSettings(SettingsPack settings, String iface, int port, int retries) {
settings_pack sp = settings.getSwig();
private static SettingsPack createSettings(String ip, int port) {
settings_pack sp = new settings_pack();

String listen_iface = String.format("%s:%d", iface, port);
sp.set_str(settings_pack.string_types.listen_interfaces.swigValue(), listen_iface);
sp.set_int(settings_pack.int_types.max_retry_port_bind.swigValue(), retries);
String iface = String.format("%s:%d", ip, port);
sp.set_str(settings_pack.string_types.listen_interfaces.swigValue(), iface);

return settings;
return new SettingsPack(sp);
}

/**
Expand Down
10 changes: 5 additions & 5 deletions src/test/java/com/frostwire/jlibtorrent/demo/DhtShell.java
Expand Up @@ -50,7 +50,7 @@ public void alert(Alert<?> alert) {
}
};

Session s = new Session("0.0.0.0", 33123, 10, false, mainListener);
Session s = new Session("0.0.0.0", 0, false, mainListener);
DHT dht = new DHT(s);
Downloader downloader = new Downloader(s);

Expand Down Expand Up @@ -146,7 +146,7 @@ private static boolean is_get(String s) {
private static void get(DHT dht, String s) {
String sha1 = s.split(" ")[1];
print("Waiting a max of 20 seconds to get data for key: " + sha1);
Entry data = dht.get(new Sha1Hash(sha1), 20000);
Entry data = dht.get(new Sha1Hash(sha1), 20);
print(data.toString());
}

Expand All @@ -157,7 +157,7 @@ private static boolean is_get_peers(String s) {
private static void get_peers(DHT dht, String s) {
String sha1 = s.split(" ")[1];
print("Waiting a max of 20 seconds to get peers for key: " + sha1);
ArrayList<TcpEndpoint> peers = dht.getPeers(new Sha1Hash(sha1), 20000);
ArrayList<TcpEndpoint> peers = dht.getPeers(new Sha1Hash(sha1), 20);
print(peers.toString());
}

Expand Down Expand Up @@ -204,7 +204,7 @@ private static void mget(DHT dht, String s) {
String[] arr = s.split(" ");
byte[] publicKey = Utils.fromHex(arr[1]);
print("Waiting a max of 20 seconds to get mutable data for public key: " + arr[1]);
DHT.MutableItem data = dht.mget(publicKey, new byte[0], 20000);
DHT.MutableItem data = dht.mget(publicKey, new byte[0], 20);
print(data.item.toString());
}

Expand All @@ -216,7 +216,7 @@ private static void magnet(Downloader downloader, String s) {
String sha1 = s.split(" ")[1];
String uri = "magnet:?xt=urn:btih:" + sha1;
print("Waiting a max of 20 seconds to fetch magnet for sha1: " + sha1);
byte[] data = downloader.fetchMagnet(uri, 20000);
byte[] data = downloader.fetchMagnet(uri, 20);
print(Entry.bdecode(data).toString());
}

Expand Down
Expand Up @@ -31,8 +31,7 @@ public void alert(Alert<?> alert) {
sp.setString(settings_pack.string_types.listen_interfaces.swigValue(), "0.0.0.0:0");
sp.enableDht(false);

//Session s = new Session(sp, false, l);
Session s = new Session("0.0.0.0", 0, 10, false, l);
Session s = new Session("0.0.0.0", 0, false, l);

s.setDhtStorage(new DhtStorageConstructor() {
@Override
Expand Down

0 comments on commit 48381cb

Please sign in to comment.