## net.i2p.router
Class RouterContext

    java.lang.Object
      net.i2p.I2PAppContext
          net.i2p.router.RouterContext

public class RouterContext
extends I2PAppContext

Build off the core I2P context to provide a root for a router instance to coordinate its resources. Router instances themselves should be sure to have their own RouterContext, and rooting off of it will allow multiple routers to operate in the same JVM without conflict (e.g. sessionTags wont get intermingled, nor will their netDbs, jobQueues, or bandwidth limiters).

Field Summary

Fields inherited from class net.i2p.I2PAppContext
`_globalAppContext`

Constructor Summary
`RouterContext(Router router)`
`RouterContext(Router router, java.util.Properties envProps)`

Method Summary
`AdminManager` `adminManager()` Controls a basic admin interface
`FIFOBandwidthLimiter` `bandwidthLimiter()` Coordinate this router's bandwidth limits
`Calculator` `capacityCalculator()` how do we rank the capacity of profiles?
`ClientManagerFacade` `clientManager()` How are we coordinating clients for the router?
`ClientMessagePool` `clientMessagePool()` Where do we toss messages for the clients (and where do we get client messages to forward on from)?
`CommSystemFacade` `commSystem()` How do we pass messages from our outNetMessagePool to another router
`(package private) static java.util.Properties` `filterProps(java.util.Properties envProps)` Unless we are explicitly disabling the timestamper, we want to use it.
`java.lang.String` `getProperty(java.lang.String propName)` Tie in the router's config as properties, as well as whatever the I2PAppContext says.
`java.lang.String` `getProperty(java.lang.String propName, java.lang.String defaultVal)` Tie in the router's config as properties, as well as whatever the I2PAppContext says.
`InNetMessagePool` `inNetMessagePool()` Where do we get network messages from (aka where does the comm system dump what it reads)?
`Calculator` `integrationCalculator()` how do we rank the integration of profiles?
`Calculator` `isFailingCalculator()` how do we rank the failure of profiles?
`JobQueue` `jobQueue()` The actual driver of the router, where all jobs are enqueued and processed.
`KeyManager` `keyManager()` Coordinates the router's ElGamal and DSA keys, as well as any keys given to it by clients as part of a LeaseSet.
`static java.util.List` `listContexts()` Retrieve the list of router contexts currently instantiated in this JVM.
`MessageHistory` `messageHistory()` Tracker component for monitoring what messages are wrapped in what containers and how they proceed through the network.
`OutboundMessageRegistry` `messageRegistry()` The registry is used by outbound messages to wait for replies.
`MessageStateMonitor` `messageStateMonitor()` The monitor keeps track of inbound and outbound messages currently held in memory / queued for processing.
`MessageValidator` `messageValidator()` The router keeps track of messages it receives to prevent duplicates, as well as other criteria for "validity".
`NetworkDatabaseFacade` `netDb()` Our db cache
`Calculator` `oldSpeedCalculator()`
`OutNetMessagePool` `outNetMessagePool()` Where do we put messages that the router wants to forwards onto the network?
`PeerManagerFacade` `peerManager()` Minimal interface for selecting peers for various tasks based on given criteria.
`ProfileManager` `profileManager()` Expose a simple API for various router components to take note of particular events that a peer enacts (sends us a message, agrees to participate in a tunnel, etc).
`ProfileOrganizer` `profileOrganizer()` Organize the peers we know about into various tiers, profiling their performance and sorting them accordingly.
`Calculator` `reliabilityCalculator()` how do we rank the reliability of profiles?
`Router` `router()` what router is this context working for?
`Hash` `routerHash()` convenience method for querying the router's ident
`Shitlist` `shitlist()` who does this peer hate?
`Calculator` `speedCalculator()` how do we rank the speed of profiles?
`StatisticsManager` `statPublisher()` If the router is configured to, gather up some particularly tasty morsels regarding the stats managed and offer to publish them into the routerInfo.
`RouterThrottle` `throttle()` Component to coordinate our accepting/rejecting of requests under load
`java.lang.String` `toString()`
`TunnelDispatcher` `tunnelDispatcher()` Handle tunnel messages, as well as coordinate the gateways
`TunnelManagerFacade` `tunnelManager()` Coordinate this router's tunnels (its pools, participation, backup, etc).

Methods inherited from class net.i2p.I2PAppContext
`aes, clock, dsa, elGamalAESEngine, elGamalEngine, getGlobalContext, getPropertyNames, hmac, keyGenerator, logManager, namingService, petnameDb, random, routingKeyGenerator, sessionKeyManager, sha, statManager`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### RouterContext

    public RouterContext(Router router)

### RouterContext

    public RouterContext(Router router,
                         java.util.Properties envProps)

Method Detail

### filterProps

    static final java.util.Properties filterProps(java.util.Properties envProps)

  Unless we are explicitly disabling the timestamper, we want to use it. We need this now as the new timestamper default is disabled (so we don't have each I2PAppContext creating their own SNTP queries all the time)

### listContexts

    public static java.util.List listContexts()

  Retrieve the list of router contexts currently instantiated in this JVM. This will always contain only one item (except when a simulation per the MultiRouter is going on), and the list should only be modified when a new context is created or a router is shut down.

### router

    public Router router()

  what router is this context working for?

### routerHash

    public Hash routerHash()

  convenience method for querying the router's ident

### adminManager

    public AdminManager adminManager()

  Controls a basic admin interface

### clientManager

    public ClientManagerFacade clientManager()

  How are we coordinating clients for the router?

### clientMessagePool

    public ClientMessagePool clientMessagePool()

  Where do we toss messages for the clients (and where do we get client messages to forward on from)?

### inNetMessagePool

    public InNetMessagePool inNetMessagePool()

  Where do we get network messages from (aka where does the comm system dump what it reads)?

### outNetMessagePool

    public OutNetMessagePool outNetMessagePool()

  Where do we put messages that the router wants to forwards onto the network?

### messageHistory

    public MessageHistory messageHistory()

  Tracker component for monitoring what messages are wrapped in what containers and how they proceed through the network. This is fully for debugging, as when a large portion of the network tracks their messages through this messageHistory and submits their logs, we can correlate them and watch as messages flow from hop to hop.

### messageRegistry

    public OutboundMessageRegistry messageRegistry()

  The registry is used by outbound messages to wait for replies.

### messageStateMonitor

    public MessageStateMonitor messageStateMonitor()

  The monitor keeps track of inbound and outbound messages currently held in memory / queued for processing. We'll use this to throttle the router so we don't overflow.

### netDb

    public NetworkDatabaseFacade netDb()

  Our db cache

### jobQueue

    public JobQueue jobQueue()

  The actual driver of the router, where all jobs are enqueued and processed.

### keyManager

    public KeyManager keyManager()

  Coordinates the router's ElGamal and DSA keys, as well as any keys given to it by clients as part of a LeaseSet.

### commSystem

    public CommSystemFacade commSystem()

  How do we pass messages from our outNetMessagePool to another router

### profileOrganizer

    public ProfileOrganizer profileOrganizer()

  Organize the peers we know about into various tiers, profiling their performance and sorting them accordingly.

### peerManager

    public PeerManagerFacade peerManager()

  Minimal interface for selecting peers for various tasks based on given criteria. This is kept seperate from the profile organizer since this logic is independent of how the peers are organized (or profiled even).

### profileManager

    public ProfileManager profileManager()

  Expose a simple API for various router components to take note of particular events that a peer enacts (sends us a message, agrees to participate in a tunnel, etc).

### bandwidthLimiter

    public FIFOBandwidthLimiter bandwidthLimiter()

  Coordinate this router's bandwidth limits

### tunnelManager

    public TunnelManagerFacade tunnelManager()

  Coordinate this router's tunnels (its pools, participation, backup, etc). Any configuration for the tunnels is rooted from the context's properties

### tunnelDispatcher

    public TunnelDispatcher tunnelDispatcher()

  Handle tunnel messages, as well as coordinate the gateways

### statPublisher

    public StatisticsManager statPublisher()

  If the router is configured to, gather up some particularly tasty morsels regarding the stats managed and offer to publish them into the routerInfo.

### shitlist

    public Shitlist shitlist()

  who does this peer hate?

### messageValidator

    public MessageValidator messageValidator()

  The router keeps track of messages it receives to prevent duplicates, as well as other criteria for "validity".

### throttle

    public RouterThrottle throttle()

  Component to coordinate our accepting/rejecting of requests under load

### isFailingCalculator

    public Calculator isFailingCalculator()

  how do we rank the failure of profiles?

### integrationCalculator

    public Calculator integrationCalculator()

  how do we rank the integration of profiles?

### speedCalculator

    public Calculator speedCalculator()

  how do we rank the speed of profiles?

### oldSpeedCalculator

    public Calculator oldSpeedCalculator()

### reliabilityCalculator

    public Calculator reliabilityCalculator()

  how do we rank the reliability of profiles?

### capacityCalculator

    public Calculator capacityCalculator()

  how do we rank the capacity of profiles?

### toString

    public java.lang.String toString()

### getProperty

    public java.lang.String getProperty(java.lang.String propName)

  Tie in the router's config as properties, as well as whatever the I2PAppContext says.

  Overrides:
    `getProperty` in class `I2PAppContext`

### getProperty

    public java.lang.String getProperty(java.lang.String propName,
                                        java.lang.String defaultVal)

  Tie in the router's config as properties, as well as whatever the I2PAppContext says.

  Overrides:
    `getProperty` in class `I2PAppContext`