net.i2p.router
Class InNetMessagePool

java.lang.Object
  extended by 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