net.i2p.i2ptunnel.irc
Class I2PTunnelDCCServer

java.lang.Object
  extended by net.i2p.util.EventDispatcherImpl
      extended by net.i2p.i2ptunnel.I2PTunnelTask
          extended by net.i2p.i2ptunnel.I2PTunnelServer
              extended by net.i2p.i2ptunnel.irc.I2PTunnelDCCServer
All Implemented Interfaces:
Runnable, EventDispatcher

public class I2PTunnelDCCServer
extends I2PTunnelServer

A standard server that only answers for registered ports, and each port can only be used once.


                                            direct conn
                <---> I2PTunnelDCCServer <--------------->I2PTunnelDCCClient <---->
   originating                                                                     responding
   chat client                                                                     chat client
        CHAT    ---> I2PTunnelIRCClient --> IRC server --> I2TunnelIRCClient ----->
        SEND    ---> I2PTunnelIRCClient --> IRC server --> I2TunnelIRCClient ----->
        RESUME  <--- I2PTunnelIRCClient <-- IRC server <-- I2TunnelIRCClient <-----
        ACCEPT  ---> I2PTunnelIRCClient --> IRC server --> I2TunnelIRCClient ----->

 

Since:
0.8.9

Field Summary
 
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelServer
__serverId, _clientExecutor, _log, bidir, i2pss, l, localPort, PROP_UNIQUE_LOCAL, PROP_USE_SSL, readTimeout, remoteHost, remotePort, slock, sockMgr, sslLock, task
 
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelTask
open
 
Constructor Summary
I2PTunnelDCCServer(I2PSocketManager sktMgr, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)
          There's no support for unsolicited incoming I2P connections, so there's no server host or port parameters.
 
Method Summary
 int acceptOutgoing(int port)
          An outgoing ACCEPT response
protected  void blockingHandle(I2PSocket socket)
          An incoming DCC connection, only accept for a known port.
 boolean close(boolean forced)
          Note that the tunnel can be reopened after this by calling startRunning().
 int newOutgoing(byte[] ip, int port, String type)
          An outgoing DCC request
 int resumeIncoming(int port)
          An incoming RESUME request
 
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelServer
destroy, getHandlerCount, getReadTimeout, getSocket, getSocket, optionsUpdated, run, setReadTimeout, shouldUsePool, startRunning
 
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelTask
connected, disconnected, errorOccurred, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString
 
Methods inherited from class net.i2p.util.EventDispatcherImpl
attachEventDispatcher, detachEventDispatcher, getEventDispatcher, getEvents, getEventValue, ignoreEvents, notifyEvent, unIgnoreEvents, waitEventValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

I2PTunnelDCCServer

public I2PTunnelDCCServer(I2PSocketManager sktMgr,
                          Logging l,
                          EventDispatcher notifyThis,
                          I2PTunnel tunnel)
There's no support for unsolicited incoming I2P connections, so there's no server host or port parameters.

Parameters:
sktMgr - an existing socket manager
Throws:
IllegalArgumentException - if the I2PTunnel does not contain valid config to contact the router
Method Detail

blockingHandle

protected void blockingHandle(I2PSocket socket)
An incoming DCC connection, only accept for a known port. Passed through without filtering.

Overrides:
blockingHandle in class I2PTunnelServer

close

public boolean close(boolean forced)
Description copied from class: I2PTunnelServer
Note that the tunnel can be reopened after this by calling startRunning(). This does not release all resources. In particular, the I2PSocketManager remains and it may have timer threads that continue running. To release all resources permanently, call destroy().

Overrides:
close in class I2PTunnelServer
Returns:
success

newOutgoing

public int newOutgoing(byte[] ip,
                       int port,
                       String type)
An outgoing DCC request

Parameters:
ip - local irc client IP
port - local irc client port
type - ignored
Returns:
i2p port or -1 on error

resumeIncoming

public int resumeIncoming(int port)
An incoming RESUME request

Parameters:
port - local dcc server I2P port
Returns:
local IRC client DCC port or -1 on error

acceptOutgoing

public int acceptOutgoing(int port)
An outgoing ACCEPT response

Parameters:
port - local irc client DCC port
Returns:
local DCC server i2p port or -1 on error