Class IterativeSearchJob

All Implemented Interfaces:
Job

public class IterativeSearchJob
extends FloodSearchJob
A traditional Kademlia search that continues to search when the initial lookup fails, by iteratively searching the closer-to-the-key peers returned by the query in a DSRM. Unlike traditional Kad, it doesn't stop when there are no closer keys, it keeps going until the timeout or max number of searches is reached. Differences from FloodOnlySearchJob: Chases peers in DSRM's immediately. FOSJ searches the two closest in parallel and then stops. There is no per-search timeout, only a total timeout. Here, we search one at a time, and must have a separate per-search timeout. Advantages: Much more robust than FOSJ, especially in a large network where not all floodfills are known. Longer total timeout. Halves search traffic for successful searches, as this doesn't do two searches in parallel like FOSJ does. Public only for JobQueue, not a public API, not for external use.
Since:
0.8.9
  • Field Details

  • Constructor Details

  • Method Details

    • runJob

      public void runJob()
      Description copied from class: FloodSearchJob
      Deprecated, unused, see FOSJ override
      Specified by:
      runJob in interface Job
      Overrides:
      runJob in class FloodSearchJob
    • getName

      public String getName()
      Description copied from class: FloodSearchJob
      Deprecated, unused, see FOSJ override
      Specified by:
      getName in interface Job
      Overrides:
      getName in class FloodSearchJob
    • failed

      void failed​(Hash peer, boolean timedOut)
      Note that the peer did not respond with a DSM (either a DSRM, timeout, or failure). This is not necessarily a total failure of the search.
      Parameters:
      timedOut - if true, will blame the peer's profile
    • newPeerToTry

      void newPeerToTry​(Hash peer)
      A new (floodfill) peer was discovered that may have the answer.
      Parameters:
      peer - may not actually be new
    • getFromHash

      public Hash getFromHash()
      Hash of the dest this query is from
      Returns:
      null for router
      Since:
      0.9.13
    • wasQueried

      public boolean wasQueried​(Hash peer)
      Did we send a request to this peer?
      Since:
      0.9.13
    • timeSent

      long timeSent​(Hash peer)
      When did we send the query to the peer?
      Returns:
      context time, or -1 if never sent
    • dropped

      public void dropped()
      Dropped by the job queue
      Specified by:
      dropped in interface Job
      Overrides:
      dropped in class JobImpl
      Since:
      0.9.31
    • failed

      void failed()
      Total failure
      Overrides:
      failed in class FloodSearchJob
    • success

      void success()
      Description copied from class: FloodSearchJob
      Deprecated, unused, see FOSJ override
      Overrides:
      success in class FloodSearchJob