## Uses of Interface
net.i2p.util.EventDispatcher

- Packages that use EventDispatcher
  Package | Description
  --- | ---
  net.i2p.i2ptunnel |
  net.i2p.i2ptunnel.socks |
  net.i2p.i2ptunnel.streamr |
  net.i2p.i2ptunnel.udpTunnel |
  net.i2p.util | These classes define the several useful utilities used throughout the router and applications.

- - ### Uses of EventDispatcher in net.i2p.i2ptunnel

    Classes in net.i2p.i2ptunnel that implement EventDispatcher
    Modifier and Type | Class and Description
    --- | ---
    `class` | `I2Ping`
    `class` | `I2PTunnel` Todo: Most events are not listened to elsewhere, so error propagation is poor
    `class` | `I2PTunnelClient`
    `class` | `I2PTunnelClientBase`
    `class` | `I2PTunnelConnectClient` Supports the following:
    `class` | `I2PTunnelHTTPBidirProxy` Reuse HTTP server's I2PSocketManager for a proxy with no outproxy capability.
    `class` | `I2PTunnelHTTPBidirServer`
    `class` | `I2PTunnelHTTPClient` Act as a mini HTTP proxy, handling various different types of requests, forwarding them through I2P appropriately, and displaying the reply.
    `class` | `I2PTunnelHTTPClientBase` Common things for HTTPClient and ConnectClient Retrofit over them in 0.8.2
    `class` | `I2PTunnelHTTPServer` Simple extension to the I2PTunnelServer that filters the HTTP headers sent from the client to the server, replacing the Host header with whatever this instance has been configured with, and if the browser set Accept-encoding: x-i2p-gzip, gzip the http message body and set Content-encoding: x-i2p-gzip.
    `class` | `I2PTunnelIRCClient` Todo: Can we extend I2PTunnelClient instead and remove some duplicated code?
    `class` | `I2PTunnelIRCServer` Simple extension to the I2PTunnelServer that filters the registration sequence to pass the destination hash of the client through as the hostname, so an IRC Server may track users across nick changes.
    `class` | `I2PTunnelServer`
    `class` | `I2PTunnelTask` Either a Server or a Client.

    Methods in net.i2p.i2ptunnel that return EventDispatcher
    Modifier and Type | Method and Description
    --- | ---
    `EventDispatcher` | I2PTunnelTask.`getEventDispatcher()`
    `EventDispatcher` | I2PTunnel.`getEventDispatcher()`

    Methods in net.i2p.i2ptunnel with parameters of type EventDispatcher
    Modifier and Type | Method and Description
    --- | ---
    `void` | I2PTunnelTask.`attachEventDispatcher(EventDispatcher e)`
    `void` | I2PTunnel.`attachEventDispatcher(EventDispatcher e)`
    `void` | I2PTunnelTask.`detachEventDispatcher(EventDispatcher e)`
    `void` | I2PTunnel.`detachEventDispatcher(EventDispatcher e)`

    Constructors in net.i2p.i2ptunnel with parameters of type EventDispatcher
    Constructor and Description
    `I2Ping(String cmd, Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelClient(int localPort, String destinations, Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel, String pkf)`
    `I2PTunnelClientBase(int localPort, boolean ownDest, Logging l, EventDispatcher notifyThis, String handlerName, I2PTunnel tunnel)`
    `I2PTunnelClientBase(int localPort, boolean ownDest, Logging l, EventDispatcher notifyThis, String handlerName, I2PTunnel tunnel, String pkf)`
    `I2PTunnelClientBase(int localPort, Logging l, I2PSocketManager sktMgr, I2PTunnel tunnel, EventDispatcher notifyThis, long clientId)`
    `I2PTunnelConnectClient(int localPort, Logging l, boolean ownDest, String wwwProxy, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelHTTPBidirProxy(int localPort, Logging l, I2PSocketManager sockMgr, I2PTunnel tunnel, EventDispatcher notifyThis, long clientId)`
    `I2PTunnelHTTPBidirServer(InetAddress host, int port, int proxyport, File privkey, String privkeyname, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelHTTPBidirServer(InetAddress host, int port, int proxyport, InputStream privData, String privkeyname, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelHTTPBidirServer(InetAddress host, int port, int proxyport, String privData, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelHTTPClient(int localPort, Logging l, boolean ownDest, String wwwProxy, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelHTTPClient(int localPort, Logging l, I2PSocketManager sockMgr, I2PTunnel tunnel, EventDispatcher notifyThis, long clientId)`
    `I2PTunnelHTTPClientBase(int localPort, boolean ownDest, Logging l, EventDispatcher notifyThis, String handlerName, I2PTunnel tunnel)`
    `I2PTunnelHTTPClientBase(int localPort, Logging l, I2PSocketManager sktMgr, I2PTunnel tunnel, EventDispatcher notifyThis, long clientId)`
    `I2PTunnelHTTPServer(InetAddress host, int port, File privkey, String privkeyname, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelHTTPServer(InetAddress host, int port, InputStream privData, String privkeyname, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelHTTPServer(InetAddress host, int port, String privData, String spoofHost, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelIRCClient(int localPort, String destinations, Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel, String pkf)`
    `I2PTunnelIRCServer(InetAddress host, int port, File privkey, String privkeyname, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelServer(InetAddress host, int port, File privkey, String privkeyname, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelServer(InetAddress host, int port, InputStream privData, String privkeyname, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelServer(InetAddress host, int port, String privData, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelTask(String name, EventDispatcher notifyThis, I2PTunnel tunnel)`

  - ### Uses of EventDispatcher in net.i2p.i2ptunnel.socks

    Classes in net.i2p.i2ptunnel.socks that implement EventDispatcher
    Modifier and Type | Class and Description
    --- | ---
    `class` | `I2PSOCKSIRCTunnel`
    `class` | `I2PSOCKSTunnel`
    `class` | `SOCKSUDPTunnel` A Datagram Tunnel that can have multiple bidirectional ports on the UDP side.

    Constructors in net.i2p.i2ptunnel.socks with parameters of type EventDispatcher
    Constructor and Description
    `I2PSOCKSIRCTunnel(int localPort, Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel, String pkf)`
    `I2PSOCKSTunnel(int localPort, Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel, String pkf)`

  - ### Uses of EventDispatcher in net.i2p.i2ptunnel.streamr

    Classes in net.i2p.i2ptunnel.streamr that implement EventDispatcher
    Modifier and Type | Class and Description
    --- | ---
    `class` | `StreamrConsumer` Compared to a standard I2PTunnel, this acts like a client on the I2P side (no privkey file) but a server on the UDP side (sends to a configured host/port)
    `class` | `StreamrProducer` Compared to a standard I2PTunnel, this acts like a server on the I2P side (persistent privkey file) but a client on the UDP side (receives on a configured port)

    Constructors in net.i2p.i2ptunnel.streamr with parameters of type EventDispatcher
    Constructor and Description
    `StreamrConsumer(InetAddress host, int port, String destination, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `StreamrProducer(int port, File privkey, String privkeyname, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`

  - ### Uses of EventDispatcher in net.i2p.i2ptunnel.udpTunnel

    Classes in net.i2p.i2ptunnel.udpTunnel that implement EventDispatcher
    Modifier and Type | Class and Description
    --- | ---
    `class` | `I2PTunnelUDPClientBase` Base client class that sets up an I2P Datagram client destination.
    `class` | `I2PTunnelUDPServerBase` Base client class that sets up an I2P Datagram server destination.

    Constructors in net.i2p.i2ptunnel.udpTunnel with parameters of type EventDispatcher
    Constructor and Description
    `I2PTunnelUDPClientBase(String destination, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`
    `I2PTunnelUDPServerBase(boolean verify, File privkey, String privkeyname, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel)`

  - ### Uses of EventDispatcher in net.i2p.util

    Classes in net.i2p.util that implement EventDispatcher
    Modifier and Type | Class and Description
    --- | ---
    `class` | `EventDispatcherImpl` An implementation of the EventDispatcher interface.

    Methods in net.i2p.util that return EventDispatcher
    Modifier and Type | Method and Description
    --- | ---
    `EventDispatcher` | EventDispatcherImpl.`getEventDispatcher()`
    `EventDispatcher` | EventDispatcher.`getEventDispatcher()` Get an object to be used to deliver events (usually `this`, but YMMV).

    Methods in net.i2p.util with parameters of type EventDispatcher
    Modifier and Type | Method and Description
    --- | ---
    `void` | EventDispatcherImpl.`attachEventDispatcher(EventDispatcher ev)`
    `void` | EventDispatcher.`attachEventDispatcher(EventDispatcher iev)` Attach an EventDispatcher object to the events dispatching chain.
    `void` | EventDispatcherImpl.`detachEventDispatcher(EventDispatcher ev)`
    `void` | EventDispatcher.`detachEventDispatcher(EventDispatcher iev)` Detach the specified EventDispatcher object from the events dispatching chain.