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

Packages that use JobImpl
net.i2p.router.client
net.i2p.router.message
net.i2p.router.networkdb
net.i2p.router.networkdb.kademlia
net.i2p.router.peermanager: The peer manager logs information about the history and quality of network peers.
net.i2p.router.startup: The I2P startup package loads the configuration when I2P is started.
net.i2p.router.transport: The transport system allows the usage of communication layers that are below I2P in the stack, on which I2P messages are sent.
net.i2p.router.tunnel.pool

Uses of JobImpl in net.i2p.router.client

Subclasses of JobImpl in net.i2p.router.client
`(package private) class` `CreateSessionJob` Given an established connection, walk through the process of establishing the lease set.
`(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
`(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
`(package private) class` `HandleGarlicMessageJob` Unencrypt a garlic message and handle each of the cloves - locally destined messages are tossed into the inbound network message pool so they're handled as if they arrived locally.
`class` `OutboundClientMessageOneShotJob` Send a client message out a random outbound tunnel and into a random inbound tunnel on the target leaseSet.
`class` `SendMessageDirectJob`

Uses of JobImpl in net.i2p.router.networkdb

Subclasses of JobImpl in net.i2p.router.networkdb
`class` `HandleDatabaseLookupMessageJob` Handle a lookup for a key received from a remote peer.
`class` `HandleDatabaseStoreMessageJob` Receive DatabaseStoreMessage data and store it in the local net db Unused - see kademlia/ for replacement
`class` `PublishLocalRouterInfoJob` Publish the local router's RouterInfo periodically NOTE - this also creates and signs the RI

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

Subclasses of JobImpl in net.i2p.router.networkdb.kademlia
`(package private) class` `ExpireLeasesJob` Periodically search 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 is out of date, but don't expire routers we're actively connected to.
`(package private) class` `ExploreJob` Search for a particular key iteratively until we either find a value, we run out of peers, or the bucket the key belongs in has sufficient values in it.
`(package private) class` `ExploreKeySelectorJob` Go through the kbuckets and generate random keys for routers in buckets not yet full, attempting to keep a pool of keys we can explore with (at least one per bucket)
`(package private) class` `FloodfillMonitorJob` Simple job to monitor the floodfill pool.
`(package private) class` `FloodfillStoreJob` This extends StoreJob to fire off a FloodfillVerifyStoreJob after success.
`class` `FloodfillVerifyStoreJob` send a netDb lookup to a random floodfill peer - if it is found, great, but if they reply back saying they dont know it, queue up a store of the key to a random floodfill peer again (via FloodfillStoreJob)
`(package private) class` `FloodOnlyLookupMatchJob`
`(package private) class` `FloodOnlyLookupTimeoutJob`

`(package private) class`

`FloodOnlySearchJob`
Try sending a search to some floodfill peers, failing completely if we don't get a match from one of those peers, with no fallback to the kademlia search Exception (a semi-exception, since we still fail completely without fallback): If we don't know any floodfill peers, we ask a couple of peers at random, who will hopefully reply with some floodfill keys.

`class` `FloodSearchJob` Try sending a search to some floodfill peers, but if we don't get a successful match within half the allowed lookup time, give up and start querying through the normal (kademlia) channels.
`class` `HandleFloodfillDatabaseLookupMessageJob` Handle a lookup for a key received from a remote peer.
`class` `HandleFloodfillDatabaseStoreMessageJob` Receive DatabaseStoreMessage data and store it in the local net db
`(package private) class` `HarvesterJob` Simple job to try to keep our peer references up to date by aggressively requerying them every few minutes.
`class` `RepublishLeaseSetJob` Run periodically for each locally created leaseSet to cause it to be republished if the client is still connected.
`(package private) class` `SearchJob` Search for a particular key iteratively until we either find a value or we run out of peers Note that this is rarely if ever used directly, and is primary used by the ExploreJob extension.
`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`
`(package private) class` `SearchUpdateReplyFoundJob` Called after a match to a db search is found
`(package private) class` `SingleLookupJob` Ask the peer who sent us the DSRM for the RouterInfos.
`(package private) class` `SingleSearchJob` Ask a single peer for a single key.
`(package private) class` `StartExplorersJob` Fire off search jobs for random keys from the explore pool, up to MAX_PER_RUN at a time.
`(package private) class` `StoreJob`

Uses of JobImpl in net.i2p.router.peermanager

Subclasses of JobImpl in net.i2p.router.peermanager
`class` `PeerTestJob` Grab some peers that we want to test and probe them briefly to get some more accurate and up to date performance data.

Uses of JobImpl in net.i2p.router.startup

Subclasses of JobImpl in net.i2p.router.startup
`class` `BootCommSystemJob` This actually boots almost everything
`class` `BootNetworkDbJob` start up the network database
`class` `BootPeerManagerJob` start up the peer manager
`class` `BuildTrustedLinksJob`
`class` `CreateRouterInfoJob`
`class` `LoadClientAppsJob` Run any client applications specified in clients.config.
`static class` `LoadClientAppsJob.DelayedRunClient`
`class` `LoadRouterInfoJob`
`class` `ReadConfigJob` Simply read the router config
`class` `RebuildRouterInfoJob` This used be called from StartAcceptingClientsJob but is now disabled.
`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.transport

Subclasses of JobImpl in net.i2p.router.transport
`(package private) class` `GetBidsJob` Retrieve a set of bids for a particular outbound message, and if any are found that meet the message's requirements, register the message as in process and pass it on to the transport for processing

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

Subclasses of JobImpl in net.i2p.router.tunnel.pool
`(package private) class` `ExpireJob` This runs twice for each tunnel.
`(package private) class` `TestJob`