net.i2p.router.tunnel
Class TunnelDispatcher

java.lang.Object
  extended by net.i2p.router.tunnel.TunnelDispatcher
All Implemented Interfaces:
Service

public class TunnelDispatcher
extends java.lang.Object
implements Service

Handle the actual processing and forwarding of messages through the various tunnels.


Constructor Summary
TunnelDispatcher(RouterContext ctx)
          Creates a new instance of TunnelDispatcher
 
Method Summary
 void dispatch(TunnelDataMessage msg, Hash recvFrom)
          We are participating in a tunnel (perhaps we're even the endpoint), so take the message and do what it says.
 void dispatch(TunnelGatewayMessage msg)
          We are the inbound tunnel gateway, so encrypt it as necessary and forward it on.
 void dispatchOutbound(I2NPMessage msg, TunnelId outboundTunnel, Hash targetPeer)
          We are the outbound tunnel gateway (we created it), so wrap up this message with instructions to be forwarded to the targetPeer when it reaches the endpoint.
 void dispatchOutbound(I2NPMessage msg, TunnelId outboundTunnel, TunnelId targetTunnel, Hash targetPeer)
          We are the outbound tunnel gateway (we created it), so wrap up this message with instructions to be forwarded to the targetTunnel on the targetPeer when it reaches the endpoint.
 void dropBiggestParticipating()
          If a router is too overloaded to build its own tunnels, the build executor may call this.
 long getLastParticipatingExpiration()
          what is the date/time on which the last non-locally-created tunnel expires?
 int getParticipatingCount()
           
 void joinInbound(TunnelCreatorConfig cfg)
          We are the inbound endpoint - we created this tunnel
 void joinInboundGateway(HopConfig cfg)
          We are the inbound gateway in this tunnel, and did not create it
 void joinOutbound(TunnelCreatorConfig cfg)
          We are the outbound gateway - we created this tunnel
 void joinOutboundEndpoint(HopConfig cfg)
          We are the outbound endpoint in this tunnel, and did not create it
 void joinParticipant(HopConfig cfg)
          We are a participant in this tunnel, but not as the endpoint or gateway
 java.util.List listParticipatingTunnels()
           
 void remove(HopConfig cfg)
          No longer participate in the tunnel that someone asked us to be a member of
 void remove(TunnelCreatorConfig cfg)
          We no longer want to participate in this tunnel that we created
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TunnelDispatcher

public TunnelDispatcher(RouterContext ctx)
Creates a new instance of TunnelDispatcher

Method Detail

joinOutbound

public void joinOutbound(TunnelCreatorConfig cfg)
We are the outbound gateway - we created this tunnel


joinInbound

public void joinInbound(TunnelCreatorConfig cfg)
We are the inbound endpoint - we created this tunnel


joinParticipant

public void joinParticipant(HopConfig cfg)
We are a participant in this tunnel, but not as the endpoint or gateway


joinOutboundEndpoint

public void joinOutboundEndpoint(HopConfig cfg)
We are the outbound endpoint in this tunnel, and did not create it


joinInboundGateway

public void joinInboundGateway(HopConfig cfg)
We are the inbound gateway in this tunnel, and did not create it


getParticipatingCount

public int getParticipatingCount()

getLastParticipatingExpiration

public long getLastParticipatingExpiration()
what is the date/time on which the last non-locally-created tunnel expires?


remove

public void remove(TunnelCreatorConfig cfg)
We no longer want to participate in this tunnel that we created


remove

public void remove(HopConfig cfg)
No longer participate in the tunnel that someone asked us to be a member of


dispatch

public void dispatch(TunnelDataMessage msg,
                     Hash recvFrom)
We are participating in a tunnel (perhaps we're even the endpoint), so take the message and do what it says. If there are later hops, that means encrypt a layer and forward it on. If there aren't later hops, how we handle it depends upon whether we created it or not. If we didn't, simply honor the instructions. If we did, unwrap all the layers of encryption and honor those instructions (within reason).


dispatch

public void dispatch(TunnelGatewayMessage msg)
We are the inbound tunnel gateway, so encrypt it as necessary and forward it on.


dispatchOutbound

public void dispatchOutbound(I2NPMessage msg,
                             TunnelId outboundTunnel,
                             Hash targetPeer)
We are the outbound tunnel gateway (we created it), so wrap up this message with instructions to be forwarded to the targetPeer when it reaches the endpoint.

Parameters:
msg - raw message to deliver to the target peer
outboundTunnel - tunnel to send the message out
targetPeer - peer to receive the message

dispatchOutbound

public void dispatchOutbound(I2NPMessage msg,
                             TunnelId outboundTunnel,
                             TunnelId targetTunnel,
                             Hash targetPeer)
We are the outbound tunnel gateway (we created it), so wrap up this message with instructions to be forwarded to the targetTunnel on the targetPeer when it reaches the endpoint.

Parameters:
msg - raw message to deliver to the targetTunnel on the targetPeer
outboundTunnel - tunnel to send the message out
targetTunnel - tunnel on the targetPeer to deliver the message to
targetPeer - gateway to the tunnel to receive the message

listParticipatingTunnels

public java.util.List listParticipatingTunnels()

dropBiggestParticipating

public void dropBiggestParticipating()
If a router is too overloaded to build its own tunnels, the build executor may call this.


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

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

restart

public void restart()
Description copied from interface: Service
Perform a soft restart.

Specified by:
restart in interface Service

renderStatusHTML

public void renderStatusHTML(java.io.Writer out)
                      throws java.io.IOException
Specified by:
renderStatusHTML in interface Service
Throws:
java.io.IOException