Package org.klomp.snark.dht
Interface DHT
-
- All Known Implementing Classes:
KRPC
public interface DHT
Stub for KRPC- Since:
- 0.8.4
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
announce(byte[] ih, boolean isSeed)
Announce to ourselves.void
announce(byte[] ih, byte[] peerHash, boolean isSeed)
Announce somebody else we know about to ourselves.int
announce(byte[] ih, int max, long maxWait, boolean isSeed)
Announce to the closest DHT peers.Collection<Hash>
getPeersAndAnnounce(byte[] ih, int max, long maxWait, int annMax, long annMaxWait, boolean isSeed, boolean noSeeds)
Get peers for a torrent, and announce to the closest annMax nodes we find.int
getPort()
int
getRPort()
void
ping(Destination dest, int port)
Ping.String
renderStatusHTML()
Debug info, HTML formattedint
size()
Known nodes, not estimated total network size.void
stop()
Stop everything.void
unannounce(byte[] ih)
Remove reference to ourselves in the local tracker.
-
-
-
Method Detail
-
getPort
int getPort()
- Returns:
- The UDP query port
-
getRPort
int getRPort()
- Returns:
- The UDP response port
-
ping
void ping(Destination dest, int port)
Ping. We don't have a NID yet so the node is presumed to be absent from our DHT. Non-blocking, does not wait for pong. If and when the pong is received the node will be inserted in our DHT.
-
getPeersAndAnnounce
Collection<Hash> getPeersAndAnnounce(byte[] ih, int max, long maxWait, int annMax, long annMaxWait, boolean isSeed, boolean noSeeds)
Get peers for a torrent, and announce to the closest annMax nodes we find. Blocking! Caller should run in a thread.- Parameters:
ih
- the Info Hash (torrent)max
- maximum number of peers to returnmaxWait
- the maximum time to wait (ms) must be > 0annMax
- the number of peers to announce toannMaxWait
- the maximum total time to wait for announces, may be 0 to return immediately without waiting for acksisSeed
- true if seed, false if leechnoSeeds
- true if we do not want seeds in the result- Returns:
- possibly empty (never null)
-
announce
void announce(byte[] ih, boolean isSeed)
Announce to ourselves. Non-blocking.- Parameters:
ih
- the Info Hash (torrent)
-
announce
void announce(byte[] ih, byte[] peerHash, boolean isSeed)
Announce somebody else we know about to ourselves. Non-blocking.- Parameters:
ih
- the Info Hash (torrent)peerHash
- the peer's Hash
-
unannounce
void unannounce(byte[] ih)
Remove reference to ourselves in the local tracker. Use when shutting down the torrent locally. Non-blocking.- Parameters:
ih
- the Info Hash (torrent)
-
announce
int announce(byte[] ih, int max, long maxWait, boolean isSeed)
Announce to the closest DHT peers. Blocking unless maxWait <= 0 Caller should run in a thread. This also automatically announces ourself to our local tracker. For best results do a getPeers() first so we have tokens.- Parameters:
ih
- the Info Hash (torrent)maxWait
- the maximum total time to wait (ms) or 0 to do all in parallel and return immediately.isSeed
- true if seed, false if leech- Returns:
- the number of successful announces, not counting ourselves.
-
stop
void stop()
Stop everything.
-
size
int size()
Known nodes, not estimated total network size.
-
renderStatusHTML
String renderStatusHTML()
Debug info, HTML formatted
-
-