net.i2p.router.networkdb.kademlia

## Class HandleFloodfillDatabaseStoreMessageJob

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

- All Implemented Interfaces:
    Job

      class HandleFloodfillDatabaseStoreMessageJob
      extends JobImpl

  Processes and stores DatabaseStoreMessage data in the floodfill network database.

  Handles incoming database store operations for both RouterInfo and LeaseSet entries with comprehensive validation, filtering, and storage logic. Implements sophisticated acceptance criteria including version checks, capability validation, reachability assessment, and distance-based routing for floodfill operations.

  Provides DOS protection through throttling, banlist enforcement, and probabilistic dropping based on database load and peer characteristics. Supports both floodfill and client database contexts with role-specific handling for each entry type.

  Manages acknowledgment responses, data flooding to other floodfills, and maintains detailed statistics for store operation performance and security.

- - ### Field Summary

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

      `_id`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HandleFloodfillDatabaseStoreMessageJob(RouterContext ctx, DatabaseStoreMessage receivedMessage, RouterIdentity from, Hash fromHash, FloodfillNetworkDatabaseFacade facade, long msgIDBloomXor)`

  - ### Method Summary

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

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

      `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

    - #### HandleFloodfillDatabaseStoreMessageJob

          public HandleFloodfillDatabaseStoreMessageJob(RouterContext ctx,
                                                        DatabaseStoreMessage receivedMessage,
                                                        RouterIdentity from,
                                                        Hash fromHash,
                                                        FloodfillNetworkDatabaseFacade facade,
                                                        long msgIDBloomXor)

      Parameters:
        `receivedMessage` - must never have reply token set if it came down a tunnel

  - ### Method Detail

    - #### dropped

          public void dropped()

      Description copied from class: `JobImpl`
      Default implementation does nothing. Called when the job is dropped due to router overload. Subclasses can override to perform cleanup or requeueing of other tasks.
      Specified by:
        `dropped` in interface `Job`
      Overrides:
        `dropped` in class `JobImpl`

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