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

Packages that use JobImpl
Package | Description
--- | ---
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
Modifier and Type | Class and Description
--- | ---
`(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
Modifier and Type | Class and Description
--- | ---
`(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
Modifier and Type | Class and Description
--- | ---
`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
Modifier and Type | Class and Description
--- | ---
`(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
Modifier and Type | Class and Description
--- | ---
`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
Modifier and Type | Class and Description
--- | ---
`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
Modifier and Type | Class and Description
--- | ---
`(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
Modifier and Type | Class and Description
--- | ---
`(package private) class` | `ExpireJob` This runs twice for each tunnel.
`(package private) class` | `TestJob`