## net.i2p.router
Class InNetMessagePool

    java.lang.Object
      net.i2p.router.InNetMessagePool

All Implemented Interfaces:
  Service

    public class InNetMessagePool

extends java.lang.Object
implements Service

Manage a pool of inbound InNetMessages. This pool is filled by the Network communication system when it receives messages, and various jobs periodically retrieve them for processing.

Field Summary
`static boolean` `DEFAULT_DISPATCH_THREADED`
`static java.lang.String` `PROP_DISPATCH_THREADED` If set to true, we will have two additional threads - one for dispatching tunnel data messages, and another for dispatching tunnel gateway messages.

Constructor Summary
`InNetMessagePool(RouterContext context)`

Method Summary
`int` `add(I2NPMessage messageBody, RouterIdentity fromRouter, Hash fromRouterHash)` Add a new message to the pool, returning the number of messages in the pool so that the comm system can throttle inbound messages.
`int` `handleReplies(I2NPMessage messageBody)`
`HandlerJobBuilder` `registerHandlerJobBuilder(int i2npMessageType, HandlerJobBuilder builder)`
`void` `renderStatusHTML(java.io.Writer out)`
`void` `restart()` Perform a soft restart.
`void` `shutdown()` Instruct the service that the router is shutting down and that it should do whatever is necessary to go down gracefully.
`void` `startup()` Instruct the service that it should start normal operation.
`HandlerJobBuilder` `unregisterHandlerJobBuilder(int i2npMessageType)`

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

Field Detail

### PROP_DISPATCH_THREADED

    public static final java.lang.String PROP_DISPATCH_THREADED

  If set to true, we will have two additional threads - one for dispatching tunnel data messages, and another for dispatching tunnel gateway messages. These will not use the JobQueue but will operate sequentially. Otherwise, if this is set to false, the messages will be queued up in the jobQueue, using the jobQueue's single thread.

  See Also:
    Constant Field Values

### DEFAULT_DISPATCH_THREADED

    public static final boolean DEFAULT_DISPATCH_THREADED

See Also:
  Constant Field Values

Constructor Detail

### InNetMessagePool

    public InNetMessagePool(RouterContext context)

Method Detail

### registerHandlerJobBuilder

    public HandlerJobBuilder registerHandlerJobBuilder(int i2npMessageType,
                                                       HandlerJobBuilder builder)

### unregisterHandlerJobBuilder

    public HandlerJobBuilder unregisterHandlerJobBuilder(int i2npMessageType)

### add

    public int add(I2NPMessage messageBody,
                   RouterIdentity fromRouter,
                   Hash fromRouterHash)

  Add a new message to the pool, returning the number of messages in the pool so that the comm system can throttle inbound messages. If there is a HandlerJobBuilder for the inbound message type, the message is loaded into a job created by that builder and queued up for processing instead (though if the builder doesn't create a job, it is added to the pool)

### handleReplies

    public int handleReplies(I2NPMessage messageBody)

### renderStatusHTML

    public void renderStatusHTML(java.io.Writer out)

  Specified by:
    `renderStatusHTML` in interface `Service`

### restart

    public void restart()

  Description copied from interface: `Service`
  Perform a soft restart.

  Specified by:
    `restart` in interface `Service`

### shutdown

    public void shutdown()

  Description copied from interface: `Service`
  Instruct the service that the router is shutting down and that it should do whatever is necessary to go down gracefully. It should not depend on other components at this point. This call DOES block.

  Specified by:
    `shutdown` in interface `Service`

### startup

    public void startup()

  Description copied from interface: `Service`
  Instruct the service that it should start normal operation. This call DOES block until the service is ready.

  Specified by:
    `startup` in interface `Service`