Class 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
  • Constructor Details

    • 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 Details

    • 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