net.i2p.router.networkdb.kademlia

## Class SingleLookupJob

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

- All Implemented Interfaces:
    Job

      class SingleLookupJob
      extends JobImpl

  Performs targeted followup lookups for RouterInfo entries from search replies.

  Processes RouterInfo hashes received in DatabaseSearchReplyMessage by initiating direct queries to obtain missing or stale RouterInfo data. For each unknown peer, queries the peer that provided the hash; for known peers with outdated data or non-floodfill status, queries the peer directly to refresh the information.

  This lightweight version of SearchReplyJob focuses specifically on RouterInfo acquisition without profile management overhead. Designed for efficient network integration and floodfill peer discovery.

  Limits concurrent followup operations based on system performance to prevent resource exhaustion during high-volume search responses.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `MAX_TO_FOLLOW` I2NP spec allows 255, max actually sent (in ../HDLMJ) is 3, so just to prevent trouble, we don't want to queue 255 jobs at once

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

      `_id`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SingleLookupJob(RouterContext ctx, DatabaseSearchReplyMessage dsrm)`

  - ### 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`

- - ### Field Detail

    - #### MAX_TO_FOLLOW

          public static final int MAX_TO_FOLLOW

      I2NP spec allows 255, max actually sent (in ../HDLMJ) is 3, so just to prevent trouble, we don't want to queue 255 jobs at once

  - ### Constructor Detail

    - #### SingleLookupJob

          public SingleLookupJob(RouterContext ctx,
                                 DatabaseSearchReplyMessage dsrm)

  - ### 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.