## Uses of Class
net.i2p.router.JobImpl

- Packages that use JobImpl
  Package | Description
  --- | ---
  net.i2p.router.client | Router-side implementation of the I2CP (I2P Client Protocol) interface for application integration.
  net.i2p.router.message | Garlic message creation, parsing, and source routing for I2P communications.
  net.i2p.router.networkdb | Network database management and coordination for the I2P distributed hash table.
  net.i2p.router.networkdb.kademlia | Kademlia DHT implementation and floodfill router functionality for I2P.
  net.i2p.router.peermanager | Peer management, profiling, and capacity calculation for I2P network optimization.
  net.i2p.router.startup | The I2P startup package loads configuration when I2P is started.
  net.i2p.router.sybil | Offline analysis tools for detecting Sybil attacks and malicious peer coordination in the I2P network.
  net.i2p.router.tasks | Periodic maintenance tasks and background jobs for I2P router operations.
  net.i2p.router.transport | Transport layer implementations and management for I2P network communication.
  net.i2p.router.tunnel.pool | Tunnel pool management, creation, and peer selection for I2P's anonymous routing system.
  net.i2p.router.web.helpers | Helpers and handlers for the router console user interface, with these classes supporting the webapp in routerconsole.war.

- - ### Uses of JobImpl in net.i2p.router.client

    Subclasses of JobImpl in net.i2p.router.client
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `CreateSessionJob` Given an established connection, walk through the process of establishing the leaseset.
    `(package private) class` | `LookupDestJob` Look up the lease of a hash, to convert it to a Destination for the client.
    `(package private) class` | `MessageReceivedJob` Async job to notify the client that a new message is available for them, or just send it directly if specified.
    `(package private) class` | `ReportAbuseJob` Async job to send an abuse message to the client
    `(package private) class` | `RequestLeaseSetJob` Async job to walk the client through generating a lease set.

  - ### Uses of JobImpl in net.i2p.router.message

    Subclasses of JobImpl in net.i2p.router.message
    Modifier and Type | Class and Description
    --- | ---
    `class` | `HandleGarlicMessageJob` Job to handle an inbound GarlicMessage received outside of a tunnel.
    `class` | `OutboundClientMessageOneShotJob` Send a client message out an outbound tunnel and into an inbound tunnel on the target leaseSet.
    `class` | `SendMessageDirectJob` Send a message directly to another router, i.e.

  - ### Uses of JobImpl in net.i2p.router.networkdb

    Subclasses of JobImpl in net.i2p.router.networkdb
    Modifier and Type | Class and Description
    --- | ---
    `class` | `HandleDatabaseLookupMessageJob` Handle a lookup for a key received from a remote peer.
    `class` | `PublishLocalRouterInfoJob` Publish the local router's RouterInfo periodically.

  - ### Uses of JobImpl in net.i2p.router.networkdb.kademlia

    Subclasses of JobImpl in net.i2p.router.networkdb.kademlia
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `DirectLookupJob` Ask a connected peer for his RI.
    `(package private) class` | `DirectLookupMatchJob` Override to not call failed() in setMessage(), as it will be called from runJob()
    `(package private) class` | `ExpireLeasesJob` Periodically searches through all leases to find expired ones, failing those keys and firing up a new search for each (in case we want it later, might as well preemptively fetch it).
    `(package private) class` | `ExpireRoutersJob` Go through the routing table pick routers that are out of date, but don't expire routers we're actively connected to.
    `class` | `ExploreJob` Represents an exploratory search job for a particular key in the Kademlia network database.
    `(package private) class` | `FloodfillMonitorJob` Simple job to monitor the floodfill pool.
    `(package private) class` | `FloodfillRouterInfoFloodJob` Job to flood nearby floodfill routers with our RI.
    `(package private) class` | `FloodfillStoreJob` This class extends StoreJob to fire off a FloodfillVerifyStoreJob after a successful store.
    `(package private) class` | `FloodfillVerifyStoreJob` Send a netDb lookup to a floodfill peer - If it is found, great, but if they reply back saying they don't know it, queue up a store of the key to a random floodfill peer again (via FloodfillStoreJob)
    `(package private) class` | `FloodOnlyLookupMatchJob` Handles match processing for flood-only search operations.
    `(package private) class` | `FloodOnlyLookupTimeoutJob` Timeout handler for flood-only search operations.
    `(package private) class` | `FloodOnlySearchJob` Flood-only search implementation for network database lookups.
    `(package private) class` | `FloodSearchJob` Base class for flood-based search operations with fallback to Kademlia.
    `class` | `HandleFloodfillDatabaseLookupMessageJob` Processes database lookup messages received by floodfill routers.
    `(package private) class` | `HandleFloodfillDatabaseStoreMessageJob` Processes and stores DatabaseStoreMessage data in the floodfill network database.
    `(package private) class` | `IterativeFollowupJob` Performs targeted followup lookups during iterative search operations.
    `(package private) class` | `IterativeLookupJob` Processes DatabaseSearchReplyMessage responses during iterative searches.
    `class` | `IterativeSearchJob` Traditional Kademlia iterative search with enhanced robustness.
    `(package private) class` | `IterativeTimeoutJob` Handles timeout events for individual peer lookups in iterative searches.
    `(package private) class` | `RefreshRoutersJob` RefreshRoutersJob performs router info refresh operations periodically.
    `class` | `RepublishLeaseSetJob` A job that periodically republishes a local LeaseSet to the network database.
    `(package private) class` | `SearchJob` Base class for iterative network database search operations.
    `protected class` | `SearchJob.FailedJob` Called when a particular peer failed to respond before the timeout was reached, or if the peer could not be contacted at all.
    `(package private) class` | `SearchReplyJob` Processes DatabaseSearchReplyMessage responses from floodfill peers.
    `(package private) class` | `SearchUpdateReplyFoundJob` Called after a match to a db search is found Used only by SearchJob which is only used by ExploreJob
    `(package private) class` | `SingleLookupJob` Performs targeted followup lookups for RouterInfo entries from search replies.
    `(package private) class` | `SingleSearchJob` Performs a targeted lookup to a single peer for a specific key.
    `(package private) class` | `StartExplorersJob` This job initiates exploration of the network database by selecting keys to explore and queuing ExploreJobs up to a maximum per run.
    `(package private) class` | `StoreJob` Abstract base class for network database store operations.

  - ### Uses of JobImpl in net.i2p.router.peermanager

    Subclasses of JobImpl in net.i2p.router.peermanager
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PeerTestJob` Periodically tests selected peers to gather real-time performance data and update peer profiles.

  - ### Uses of JobImpl in net.i2p.router.startup

    Subclasses of JobImpl in net.i2p.router.startup
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `BootCommSystemJob` This actually boots almost everything
    `(package private) class` | `BootNetworkDbJob` start up the network database
    `(package private) class` | `BootPeerManagerJob` start up the peer manager
    `(package private) class` | `BuildTrustedLinksJob` For future restricted routes.
    `class` | `CreateRouterInfoJob` Warning - misnamed.
    `class` | `LoadClientAppsJob` Run any client applications specified in clients.config.
    `(package private) class` | `LoadRouterInfoJob` Run once or twice at startup by StartupJob, and then runs BootCommSystemJob
    `(package private) class` | `RebuildRouterInfoJob` This used be called from StartAcceptingClientsJob but is now disabled.
    `(package private) class` | `StartAcceptingClientsJob` start I2CP interface
    `class` | `StartupJob` The StartupJob should be run once on router startup to initialize the system and set things in motion.

  - ### Uses of JobImpl in net.i2p.router.sybil

    Subclasses of JobImpl in net.i2p.router.sybil
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Analysis` Sybil attack analysis implementation.

  - ### Uses of JobImpl in net.i2p.router.tasks

    Subclasses of JobImpl in net.i2p.router.tasks
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PersistRouterInfoJob` Router information persistence and synchronization job.
    `class` | `ReadConfigJob` Simply read the router config periodically, so that the user may make config changes externally.
    `class` | `UpdateRoutingKeyModifierJob` Update the routing Key modifier every day at midnight (plus on startup).

  - ### Uses of JobImpl in net.i2p.router.transport

    Subclasses of JobImpl in net.i2p.router.transport
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `GetBidsJob` Retrieves transport bids for outbound message delivery.

  - ### Uses of JobImpl in net.i2p.router.tunnel.pool

    Subclasses of JobImpl in net.i2p.router.tunnel.pool
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `ExpireJob` Handles tunnel expiration in two phases for graceful shutdown.
    `class` | `ExpireJobManager` Manager for batching tunnel expirations to reduce job queue overhead.
    `class` | `TestJob` Repeatedly tests a single tunnel for its lifetime to ensure it remains functional.

  - ### Uses of JobImpl in net.i2p.router.web.helpers

    Subclasses of JobImpl in net.i2p.router.web.helpers
    Modifier and Type | Class and Description
    --- | ---
    `class` | `NetDbCachingJob` A caching job that periodically performs: - Reverse DNS precaching for known routers - Introducer precaching for known routers Ensures: - Only one instance is ever scheduled.