Package net.i2p.i2ptunnel
Class I2PTunnelIRCClient
- java.lang.Object
-
- net.i2p.util.EventDispatcherImpl
-
- net.i2p.i2ptunnel.I2PTunnelTask
-
- net.i2p.i2ptunnel.I2PTunnelClientBase
-
- net.i2p.i2ptunnel.I2PTunnelIRCClient
-
- All Implemented Interfaces:
Runnable,EventDispatcher
public class I2PTunnelIRCClient extends I2PTunnelClientBase
Todo: Can we extend I2PTunnelClient instead and remove some duplicated code?
-
-
Field Summary
Fields Modifier and Type Field Description static StringPROP_DCCprotected longreadTimeout-
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase
_clientId, _context, _log, _ownDest, DEFAULT_CONNECT_TIMEOUT, dest, l, listenerReady, mySockets, PROP_USE_SSL, sockLock, sockMgr, ss
-
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelTask
open
-
-
Constructor Summary
Constructors Constructor Description I2PTunnelIRCClient(int localPort, String destinations, Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel, String pkf)As of 0.9.20 this is fast, and does NOT connect the manager to the router, or open the local socket.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidclientConnectionRun(Socket s)Manage a connection in a separate thread.booleanclose(boolean forced)Note that the tunnel can be reopened after this by calling startRunning().voidoptionsUpdated(I2PTunnel tunnel)Update the dests then call super.voidstartRunning()Actually open the local socket and start working on incoming connections.-
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase
addSubsession, buildSocketManager, buildSocketManager, buildSocketManager, buildSocketManager, closeSocket, createI2PSocket, createI2PSocket, createI2PSocket, destroy, getDefaultOptions, getDefaultOptions, getListenHost, getLocalPort, getSocketManager, getSocketManager, getSocketManager, killSharedClient, manageConnection, run, verifySocketManager
-
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
-
-
-
-
Field Detail
-
readTimeout
protected long readTimeout
-
PROP_DCC
public static final String PROP_DCC
- Since:
- 0.8.9
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
I2PTunnelIRCClient
public I2PTunnelIRCClient(int localPort, String destinations, Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel, String pkf) throws IllegalArgumentExceptionAs of 0.9.20 this is fast, and does NOT connect the manager to the router, or open the local socket. You MUST call startRunning() for that.- Parameters:
destinations- peers we target, comma- or space-separated. Since 0.9.9, each dest may be appended with :port- 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:I2PTunnelClientBaseManage a connection in a separate thread. This only works if you do not override manageConnection(). This is run in a thread from an unlimited-size thread pool, so it may block or run indefinitely.- Specified by:
clientConnectionRunin classI2PTunnelClientBase
-
optionsUpdated
public void optionsUpdated(I2PTunnel tunnel)
Update the dests then call super.- Overrides:
optionsUpdatedin classI2PTunnelClientBase- Since:
- 0.9.9
-
startRunning
public void startRunning()
Description copied from class:I2PTunnelClientBaseActually open the local socket and start working on incoming connections. *Must* be called by derived classes after initialization. (this wasn't actually true until 0.9.20) This will be fast if i2cp.delayOpen is true, but could take a LONG TIME if it is false, as it connects to the router and builds tunnels. Extending classes must check the value of boolean open after calling super.startRunning(), if false then something went wrong.- Overrides:
startRunningin classI2PTunnelClientBase
-
close
public boolean close(boolean forced)
Description copied from class:I2PTunnelClientBaseNote that the tunnel can be reopened after this by calling startRunning(). This may 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(). Does nothing if open is already false. Sets open = false but does not notifyAll().- Overrides:
closein classI2PTunnelClientBase- Returns:
- success
-
-