net.i2p.i2ptunnel

## Class I2PTunnelIRCClient

- java.lang.Object
- - net.i2p.i2ptunnel.I2PTunnelTask
  - - net.i2p.i2ptunnel.I2PTunnelClientBase
    - - net.i2p.i2ptunnel.I2PTunnelIRCClient

All Implemented Interfaces:
  Runnable, EventDispatcher

    public class I2PTunnelIRCClient
    extends I2PTunnelClientBase
    implements Runnable

Todo: Can we extend I2PTunnelClient instead and remove some duplicated code?

### Nested Class Summary

Nested Classes
`static class` `I2PTunnelIRCClient.IrcInboundFilter`
`static class` `I2PTunnelIRCClient.IrcOutboundFilter`

### Field Summary

Fields
`protected List<Destination>` `dests` list of Destination objects that we point at
`protected long` `readTimeout`

### Fields inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase

`_clientId, _context, _executor, _log, _ownDest, DEFAULT_CONNECT_TIMEOUT, dest, l, mySockets, sockLock, sockMgr`

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

`open`

### Constructor Summary

Constructors
Constructor and Description
`I2PTunnelIRCClient(int localPort, String destinations, Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel, String pkf)`

### Method Summary

Methods
`protected void` `clientConnectionRun(Socket s)` Manage a connection in a separate thread.
`static String` `inboundFilter(String s, StringBuffer expectedPong)`
`static String` `outboundFilter(String s, StringBuffer expectedPong)`

### Methods inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase

`buildSocketManager, buildSocketManager, buildSocketManager, buildSocketManager, close, closeSocket, createI2PSocket, createI2PSocket, getDefaultOptions, getDefaultOptions, getListenHost, getLocalPort, getSocketManager, getSocketManager, getSocketManager, manageConnection, run, startRunning, verifySocketManager`

### 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`

### Methods inherited from interface java.lang.Runnable

`run`

### Field Detail

#### dests

    protected List<Destination> dests

list of Destination objects that we point at

#### readTimeout

    protected long readTimeout

### Constructor Detail

#### I2PTunnelIRCClient

    public I2PTunnelIRCClient(int localPort,
                      String destinations,
                      Logging l,
                      boolean ownDest,
                      EventDispatcher notifyThis,
                      I2PTunnel tunnel,
                      String pkf)
                       throws IllegalArgumentException

Throws:
  `IllegalArgumentException` - if the I2PTunnel does not contain valid config to contact the router

### Method Detail

#### clientConnectionRun

    protected void clientConnectionRun(Socket s)

Description copied from class: `I2PTunnelClientBase`
Manage a connection in a separate thread. This only works if you do not override manageConnection()

Specified by:
  `clientConnectionRun` in class `I2PTunnelClientBase`

#### inboundFilter

    public static String inboundFilter(String s,
                       StringBuffer expectedPong)

#### outboundFilter

    public static String outboundFilter(String s,
                        StringBuffer expectedPong)