net.i2p.router.networkdb.kademlia

## Class FloodOnlyLookupSelector

- java.lang.Object
- - net.i2p.router.networkdb.kademlia.FloodOnlyLookupSelector

- All Implemented Interfaces:
    MessageSelector

      class FloodOnlyLookupSelector
      extends Object
      implements MessageSelector

  Message selector for flood-only database lookup operations.

  Matches incoming DatabaseStoreMessage and DatabaseSearchReplyMessage responses to specific flood-only search jobs. Handles response validation, lookup decrement tracking, and coordinates followup searches through SingleLookupJob when appropriate.

  Largely superseded by IterativeLookupSelector but retained for compatibility with existing flood-only search implementations. Provides specialized logic for flood-based search response handling with profile management and search lifecycle coordination.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `FloodOnlyLookupSelector(RouterContext ctx, FloodOnlySearchJob search)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `continueMatching()` Returns true if the selector should still keep searching for further matches.
    `long` | `getExpiration()` Returns the # of milliseconds since the epoch after which this selector should stop searching for matches.
    `boolean` | `isMatch(I2NPMessage message)` Returns true if the received message matches the selector.
    `String` | `toString()`

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

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

- - ### Constructor Detail

    - #### FloodOnlyLookupSelector

          public FloodOnlyLookupSelector(RouterContext ctx,
                                         FloodOnlySearchJob search)

  - ### Method Detail

    - #### continueMatching

          public boolean continueMatching()

      Description copied from interface: `MessageSelector`
      Returns true if the selector should still keep searching for further matches. This is called only if isMatch() returns true. If this returns true, isMatch() will not be called again.
      Specified by:
        `continueMatching` in interface `MessageSelector`

    - #### getExpiration

          public long getExpiration()

      Description copied from interface: `MessageSelector`
      Returns the # of milliseconds since the epoch after which this selector should stop searching for matches. At some time after expiration, if continueMatching() has not returned false, the job specified by OutNetMessage.getOnFailedReplyJob() will be run for every OutNetMessage associated with this selector (by OutboundMessageRegistry).
      Specified by:
        `getExpiration` in interface `MessageSelector`

    - #### isMatch

          public boolean isMatch(I2NPMessage message)

      Description copied from interface: `MessageSelector`
      Returns true if the received message matches the selector. If this returns true, the job specified by OutNetMessage.getOnReplyJob() will be run for every OutNetMessage associated with this selector (by InNetMessagePool), after calling setMessage() for that ReplyJob. WARNING this is called from within OutboundMessageSelector.getOriginalMessages() inside a lock and can lead to deadlocks if the selector does too much in isMatch(). Until the lock is removed, take care to keep it simple.
      Specified by:
        `isMatch` in interface `MessageSelector`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`