class SearchState extends Object
Tracks peer interaction status, timing information, and search progress for iterative Kademlia searches. Maintains separate sets for pending, attempted, failed, successful, and replied peers to coordinate concurrent search operations and prevent duplicate queries.
Thread-safe implementation using synchronized collections and atomic counters for safe concurrent access from multiple search jobs.
| Constructor and Description |
|---|
SearchState(RouterContext context,
Hash key) |
| Modifier and Type | Method and Description |
|---|---|
void |
abort() |
void |
addPending(Collection<Hash> pending) |
void |
addPending(Hash peer) |
void |
complete() |
boolean |
completed() |
long |
dataFound(Hash peer)
how long did it take to get the reply, or -1 if we don't know
|
Set<Hash> |
getAttempted() |
Set<Hash> |
getClosestAttempted(int max) |
Set<Hash> |
getFailed() |
Set<Hash> |
getPending() |
Set<Hash> |
getRepliedPeers() |
Set<Hash> |
getSuccessful() |
Hash |
getTarget() |
long |
getWhenCompleted() |
long |
getWhenStarted() |
boolean |
isAborted() |
void |
removePending(Hash peer)
we didn't actually want to add this peer as part of the pending list...
|
long |
replyFound(Hash peer)
how long did it take to get the reply, or -1 if we dont know
|
void |
replyTimeout(Hash peer) |
String |
toString() |
boolean |
wasAttempted(Hash peer) |
public SearchState(RouterContext context, Hash key)
public void abort()
public void addPending(Collection<Hash> pending)
public void addPending(Hash peer)
public void complete()
public boolean completed()
public long dataFound(Hash peer)
public Hash getTarget()
public long getWhenCompleted()
public long getWhenStarted()
public boolean isAborted()
public void removePending(Hash peer)
public long replyFound(Hash peer)
public void replyTimeout(Hash peer)
public boolean wasAttempted(Hash peer)