## Package net.i2p.router

Interface Summary
HandlerJobBuilder: Defines a class that builds jobs to handle a particular message - these builders are registered with the InNetMessagePool for various I2NP message types, allowing immediate queueing of a handler job rather than waiting for a polling job to come pick it up.
Job: Defines an executable task
MessageSelector: Define a mechanism to select what messages are associated with a particular OutNetMessage.
PeerManagerFacade: Manage peer references and keep them up to date so that when asked for peers, it can provide appropriate peers according to the criteria provided.
ProfileManager
ReplyJob: Defines an executable task that can be fired off in reply to a message
RouterThrottle: Gatekeeper for deciding whether to throttle the further processing of messages through the router.
Service: Define the manageable service interface for the subsystems in the I2P router
TunnelInfo: Defines the information associated with a tunnel
TunnelManagerFacade: Build and maintain tunnels throughout the network.

Class Summary
ClientManagerFacade: Manage all interactions with clients
ClientMessage: Wrap a message either destined for a local client or received from one.
ClientMessagePool: Manage all of the inbound and outbound client messages maintained by the router.
ClientTunnelSettings: Wrap up the client settings specifying their tunnel criteria
CoalesceStatsEvent: coalesce the stats framework every minute
CommSystemFacade: Manages the communication subsystem between peers, including connections, listeners, transports, connection keys, etc.
DummyClientManagerFacade
DummyCommSystemFacade
DummyNetworkDatabaseFacade
DummyPeerManagerFacade
DummyTunnelManagerFacade
InNetMessagePool: Manage a pool of inbound InNetMessages.
JobImpl: Base implementation of a Job
JobQueue: Manage the pending jobs according to whatever algorithm is appropriate, giving preference to earlier scheduled jobs.
JobQueueRunner: a do run run run a do run run
JobStats: glorified struct to contain basic job stats
JobTiming: Define the timing requirements and statistics for a particular job
KeyManager: Maintain all of the key pairs for the router.
LeaseSetKeys: Wrap up the keys given to the router when a destination connects to it
LoadTestManager: Coordinate some tests of peers to see how much load they can handle.
MarkLiveliness
MessageHistory: Simply act as a pen register of messages sent in and out of the router.
MessageReceptionInfo: Wrap up the details of how a ClientMessage was received from the network
MessageStateMonitor: Keep track of the inbound and outbound messages in memory.
MessageValidator: Singleton to manage the logic (and historical data) to determine whether a message is valid or not (meaning it isn't expired and hasn't already been received).
MultiRouter: Fire up multiple routers in the same VM, all with their own RouterContext (and all that entails).
MultiRouterBuilder: Build a set of config files suitable for use by the multirouter as a simulation, as well as a pair of scripts for running the simulation.
NetworkDatabaseFacade: Defines the mechanism for interacting with I2P's network database
OutNetMessage: Wrap up an outbound I2NP message, along with the information associated with its delivery and jobs to be fired off if particular events occur.
OutNetMessagePool: Maintain a pool of OutNetMessages destined for other routers, organized by priority, expiring messages as necessary.
PeerSelectionCriteria: Defines the criteria for selecting a set of peers for use when searching the PeerManager
PersistRouterInfoJob: update the router.info file whenever its, er, updated
Router: Main driver for the router.
RouterClock: Alternate location for determining the time which takes into account an offset.
RouterContext: Build off the core I2P context to provide a root for a router instance to coordinate its resources.
RouterDoSThrottle: Minor extention of the router throttle to handle some DoS events and throttle accordingly.
RouterLaunch
RouterThrottleImpl: Simple throttle that basically stops accepting messages or nontrivial requests if the jobQueue lag is too large.
RouterVersion: Expose a version string
RouterWatchdog: Periodically check to make sure things haven't gone totally haywire (and if they have, restart the JVM)
SessionKeyPersistenceHelper: Centralize the sessionKeyManager persistence (rather than leave it to a private job in the startup job)
Shitlist: Routers are shitlisted only if none of our transports can talk to them or their signed router info is completely screwy.
ShutdownHook
SSUDemo: Demo of a stripped down router - no tunnels, no netDb, no i2cp, no peer profiling, just the SSU comm layer, crypto, and associated infrastructure, extended to handle a new type of message ("FooMessage").
StatisticsManager: Maintain the statistics about the router
SubmitMessageHistoryJob: Job that, if its allowed to, will submit the data gathered by the MessageHistory component to some URL so that the network can be debugged more easily.
TunnelPoolSettings: Wrap up the settings for a pool of tunnels (duh)
TunnelSelectionCriteria: Set of criteria for finding a tunnel from the Tunnel Manager
TunnelSettings: Wrap up the settings specified for a particular tunnel
UpdateRoutingKeyModifierJob: Update the routing Key modifier every day at midnight (plus on startup).