net.i2p.router.networkdb.kademlia

## Class IterativeLookupJob

- java.lang.Object
- - net.i2p.router.JobImpl
  - - net.i2p.router.networkdb.kademlia.IterativeLookupJob

- All Implemented Interfaces:
    Job

      class IterativeLookupJob
      extends JobImpl

  Processes DatabaseSearchReplyMessage responses during iterative searches.

  Handles the followup lookups for RouterInfo entries returned in DSRM messages during iterative Kademlia searches. For each peer hash in the reply, determines whether to fetch new RouterInfo data or refresh existing entries based on age and floodfill status.

  Optimizes network integration by preferentially querying routers directly for their own RouterInfo when existing data is stale or the router is not confirmed as floodfill. This helps establish reliable floodfill peers and accelerates network discovery.

  Extracted from IterativeLookupSelector to prevent deadlocks with the OutboundMessageRegistry during concurrent search operations.

- - ### Field Summary

    - ### Fields inherited from class net.i2p.router.JobImpl

      `_id`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IterativeLookupJob(RouterContext ctx, DatabaseSearchReplyMessage dsrm, IterativeSearchJob search)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getName()` Descriptive name of the task
    `void` | `runJob()` Actually perform the task.

    - ### Methods inherited from class net.i2p.router.JobImpl

      `dropped, getContext, getJobId, getMadeReadyOn, getTiming, madeReady, requeue, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### IterativeLookupJob

          public IterativeLookupJob(RouterContext ctx,
                                    DatabaseSearchReplyMessage dsrm,
                                    IterativeSearchJob search)

  - ### Method Detail

    - #### getName

          public String getName()

      Description copied from interface: `Job`
      Descriptive name of the task
      Returns:
        the descriptive name of the task

    - #### runJob

          public void runJob()

      Description copied from interface: `Job`
      Actually perform the task. This call blocks until the Job is complete.