net.i2p.i2ptunnel.socks

## Class SOCKSUDPTunnel

- java.lang.Object
- - net.i2p.i2ptunnel.I2PTunnelTask
  - - net.i2p.i2ptunnel.udpTunnel.I2PTunnelUDPClientBase
    - - net.i2p.i2ptunnel.socks.SOCKSUDPTunnel

- All Implemented Interfaces:
    Sink, Source, EventDispatcher

      public class SOCKSUDPTunnel
      extends I2PTunnelUDPClientBase

  A Datagram Tunnel that can have multiple bidirectional ports on the UDP side. TX: (ReplyTracker in multiple SOCKSUDPPorts -> ) I2PSink RX: (SOCKSUDPWrapper in multiple SOCKSUDPPorts <- ) MultiSink <- I2PSource The reply from a dest goes to the last SOCKSUDPPort that sent to that dest. If multiple ports are talking to a dest at the same time, this isn't going to work very well.
  Author:
    zzz modded from streamr/StreamrConsumer

- - ### Field Summary

    - ### Fields inherited from class net.i2p.i2ptunnel.udpTunnel.I2PTunnelUDPClientBase

      `_clientId, _context, dest, l`

    - ### Fields inherited from class net.i2p.i2ptunnel.I2PTunnelTask

      `open`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SOCKSUDPTunnel(I2PTunnel tunnel)` Set up a tunnel with no UDP side yet.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `add(InetAddress host, int port)`
    `boolean` | `close(boolean forced)` I2PTunnelTask Methods Classes should override to close UDP side as well
    `void` | `remove(Integer port)`
    `void` | `startRunning()` Actually start working on outgoing connections.

    - ### Methods inherited from class net.i2p.i2ptunnel.udpTunnel.I2PTunnelUDPClientBase

      `send, setSink, start`

    - ### Methods inherited from class net.i2p.i2ptunnel.I2PTunnelTask

      `attachEventDispatcher, detachEventDispatcher, disconnected, errorOccurred, getEventDispatcher, getEvents, getEventValue, getId, getTunnel, ignoreEvents, isOpen, notifyEvent, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString, unIgnoreEvents, waitEventValue`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### SOCKSUDPTunnel

          public SOCKSUDPTunnel(I2PTunnel tunnel)

      Set up a tunnel with no UDP side yet. Use add() for each port.

  - ### Method Detail

    - #### add

          public int add(InetAddress host,
                int port)

      Returns:
        the UDP port number

    - #### remove

          public void remove(Integer port)

    - #### startRunning

          public final void startRunning()

      Description copied from class: `I2PTunnelUDPClientBase`
      Actually start working on outgoing connections. Classes should override to start UDP side as well. Not specified in I2PTunnelTask but used in both I2PTunnelClientBase and I2PTunnelServer so let's implement it here too.
      Overrides:
        `startRunning` in class `I2PTunnelUDPClientBase`

    - #### close

          public boolean close(boolean forced)

      Description copied from class: `I2PTunnelUDPClientBase`
      I2PTunnelTask Methods Classes should override to close UDP side as well
      Overrides:
        `close` in class `I2PTunnelUDPClientBase`