java.lang.Runnable
, EventDispatcher
I2Ping
, I2PSOCKSTunnel
, I2PTunnelClient
, I2PTunnelDCCClient
, I2PTunnelHTTPClientBase
, I2PTunnelIRCClient
public abstract class I2PTunnelClientBase extends I2PTunnelTask implements java.lang.Runnable
修飾子とタイプ | フィールド | 説明 |
---|---|---|
protected long |
_clientId |
|
protected I2PAppContext |
_context |
|
protected Log |
_log |
|
protected boolean |
_ownDest |
|
(package private) static long |
DEFAULT_CONNECT_TIMEOUT |
|
protected Destination |
dest |
|
protected Logging |
l |
|
protected boolean |
listenerReady |
Protected for I2Ping since 0.9.11.
|
protected java.util.List<I2PSocket> |
mySockets |
|
static java.lang.String |
PROP_USE_SSL |
|
protected java.lang.Object |
sockLock |
|
protected I2PSocketManager |
sockMgr |
|
protected java.net.ServerSocket |
ss |
open
コンストラクタ | 説明 |
---|---|
I2PTunnelClientBase(int localPort,
boolean ownDest,
Logging l,
EventDispatcher notifyThis,
java.lang.String handlerName,
I2PTunnel tunnel) |
The main constructor.
|
I2PTunnelClientBase(int localPort,
boolean ownDest,
Logging l,
EventDispatcher notifyThis,
java.lang.String handlerName,
I2PTunnel tunnel,
java.lang.String pkf) |
Use this to build a client with a persistent private key.
|
I2PTunnelClientBase(int localPort,
Logging l,
I2PSocketManager sktMgr,
I2PTunnel tunnel,
EventDispatcher notifyThis,
long clientId) |
This constructor is used to add a client to an existing socket manager.
|
修飾子とタイプ | メソッド | 説明 |
---|---|---|
protected static I2PSession |
addSubsession(I2PTunnel tunnel) |
Add a DSA_SHA1 subsession to the shared client if necessary.
|
protected I2PSocketManager |
buildSocketManager() |
For NON-SHARED clients (ownDest = true).
|
protected static I2PSocketManager |
buildSocketManager(I2PTunnel tunnel) |
As of 0.9.20 this is fast, and does NOT connect the manager to the router.
|
protected static I2PSocketManager |
buildSocketManager(I2PTunnel tunnel,
java.lang.String pkf) |
As of 0.9.20 this is fast, and does NOT connect the manager to the router.
|
protected static I2PSocketManager |
buildSocketManager(I2PTunnel tunnel,
java.lang.String pkf,
Logging log) |
As of 0.9.20 this is fast, and does NOT connect the manager to the router.
|
protected abstract void |
clientConnectionRun(java.net.Socket s) |
Manage a connection in a separate thread.
|
boolean |
close(boolean forced) |
Note that the tunnel can be reopened after this by calling startRunning().
|
static void |
closeSocket(java.net.Socket s) |
|
I2PSocket |
createI2PSocket(Destination dest) |
Create a new I2PSocket towards to the specified destination,
adding it to the list of connections actually managed by this
tunnel.
|
I2PSocket |
createI2PSocket(Destination dest,
int port) |
Create a new I2PSocket towards to the specified destination,
adding it to the list of connections actually managed by this
tunnel.
|
I2PSocket |
createI2PSocket(Destination dest,
I2PSocketOptions opt) |
Create a new I2PSocket towards to the specified destination,
adding it to the list of connections actually managed by this
tunnel.
|
boolean |
destroy() |
Note that the tunnel cannot be reopened after this by calling startRunning(),
as it will destroy the underlying socket manager.
|
protected I2PSocketOptions |
getDefaultOptions() |
Create the default options (using the default timeout, etc).
|
protected I2PSocketOptions |
getDefaultOptions(java.util.Properties overrides) |
Create the default options (using the default timeout, etc).
|
protected java.net.InetAddress |
getListenHost(Logging l) |
|
int |
getLocalPort() |
|
protected I2PSocketManager |
getSocketManager() |
This is ONLY for shared clients.
|
protected static I2PSocketManager |
getSocketManager(I2PTunnel tunnel) |
This is ONLY for shared clients.
|
protected static I2PSocketManager |
getSocketManager(I2PTunnel tunnel,
java.lang.String pkf) |
This is ONLY for shared clients.
|
protected static void |
killSharedClient() |
Kill the shared client, so that on restart in android
we won't latch onto the old one
|
protected void |
manageConnection(java.net.Socket s) |
Manage the connection just opened on the specified socket
|
void |
optionsUpdated(I2PTunnel tunnel) |
Update the I2PSocketManager.
|
void |
run() |
Non-final since 0.9.11.
|
void |
startRunning() |
Actually open the local socket and start working on incoming connections.
|
protected void |
verifySocketManager() |
Create the manager if it doesn't exist, AND connect it to the router and
build tunnels.
|
attachEventDispatcher, detachEventDispatcher, getEventDispatcher, getEvents, getEventValue, ignoreEvents, notifyEvent, unIgnoreEvents, waitEventValue
connected, disconnected, errorOccurred, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString
protected final Log _log
protected final I2PAppContext _context
protected final Logging l
static final long DEFAULT_CONNECT_TIMEOUT
protected long _clientId
protected final java.lang.Object sockLock
protected I2PSocketManager sockMgr
protected final java.util.List<I2PSocket> mySockets
protected boolean _ownDest
protected Destination dest
protected boolean listenerReady
protected java.net.ServerSocket ss
public static final java.lang.String PROP_USE_SSL
public I2PTunnelClientBase(int localPort, Logging l, I2PSocketManager sktMgr, I2PTunnel tunnel, EventDispatcher notifyThis, long clientId) throws java.lang.IllegalArgumentException
As of 0.9.21 this does NOT open the local socket. You MUST call
startRunning()
for that. The local socket will be opened
immediately (ignoring the i2cp.delayOpen
option).
localPort
- if 0, use any port, get actual port selected with getLocalPort()sktMgr
- the existing socket managerjava.lang.IllegalArgumentException
public I2PTunnelClientBase(int localPort, boolean ownDest, Logging l, EventDispatcher notifyThis, java.lang.String handlerName, I2PTunnel tunnel) throws java.lang.IllegalArgumentException
As of 0.9.21 this is fast, and does NOT connect the manager to the router, or open the local socket. You MUST call startRunning() for that.
(0.9.20 claimed to be fast, but due to a bug it DID connect the manager to the router. It did NOT open the local socket however, so it was still necessary to call startRunning() for that.)
localPort
- if 0, use any port, get actual port selected with getLocalPort()java.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we can't create a socketManagerpublic I2PTunnelClientBase(int localPort, boolean ownDest, Logging l, EventDispatcher notifyThis, java.lang.String handlerName, I2PTunnel tunnel, java.lang.String pkf) throws java.lang.IllegalArgumentException
As of 0.9.21 this is fast, and does NOT connect the manager to the router, or open the local socket. You MUST call startRunning() for that.
(0.9.20 claimed to be fast, but due to a bug it DID connect the manager to the router. It did NOT open the local socket however, so it was still necessary to call startRunning() for that.)
localPort
- if 0, use any port, get actual port selected with getLocalPort()pkf
- Path to the private key file, or null to generate a transient keyjava.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we can't create a socketManagerprotected void verifySocketManager()
java.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we cant create a socketManagerprotected I2PSocketManager getSocketManager()
java.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we cant create a socketManagerprotected static I2PSocketManager getSocketManager(I2PTunnel tunnel)
java.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we cant create a socketManagerprotected static I2PSocketManager getSocketManager(I2PTunnel tunnel, java.lang.String pkf)
java.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we cant create a socketManagerprotected static I2PSession addSubsession(I2PTunnel tunnel)
protected static void killSharedClient()
protected I2PSocketManager buildSocketManager()
java.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we cant create a socketManagerprotected static I2PSocketManager buildSocketManager(I2PTunnel tunnel)
java.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we cant create a socketManagerprotected static I2PSocketManager buildSocketManager(I2PTunnel tunnel, java.lang.String pkf)
pkf
- absolute path or nulljava.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we cant create a socketManagerprotected static I2PSocketManager buildSocketManager(I2PTunnel tunnel, java.lang.String pkf, Logging log)
pkf
- absolute path or nulljava.lang.IllegalArgumentException
- if the I2CP configuration is b0rked so
badly that we cant create a socketManagerpublic final int getLocalPort()
protected final java.net.InetAddress getListenHost(Logging l)
public void startRunning()
protected I2PSocketOptions getDefaultOptions()
protected I2PSocketOptions getDefaultOptions(java.util.Properties overrides)
public void optionsUpdated(I2PTunnel tunnel)
optionsUpdated
クラス内 I2PTunnelTask
public I2PSocket createI2PSocket(Destination dest) throws I2PException, java.net.ConnectException, java.net.NoRouteToHostException, java.io.InterruptedIOException
dest
- The destination to connect to, non-nullI2PException
java.net.ConnectException
java.net.NoRouteToHostException
java.io.InterruptedIOException
public I2PSocket createI2PSocket(Destination dest, int port) throws I2PException, java.net.ConnectException, java.net.NoRouteToHostException, java.io.InterruptedIOException
dest
- The destination to connect to, non-nullport
- The destination port to connect to 0 - 65535I2PException
java.net.ConnectException
java.net.NoRouteToHostException
java.io.InterruptedIOException
public I2PSocket createI2PSocket(Destination dest, I2PSocketOptions opt) throws I2PException, java.net.ConnectException, java.net.NoRouteToHostException, java.io.InterruptedIOException
dest
- The destination to connect to, non-nullopt
- Option to be used to open when opening the socketjava.net.ConnectException
- if the peer refuses the connectionjava.net.NoRouteToHostException
- if the peer is not found or not reachablejava.io.InterruptedIOException
- if the connection timeoutsI2PException
- if there is some other I2P-related problempublic void run()
run
インタフェース内 java.lang.Runnable
protected void manageConnection(java.net.Socket s)
s
- Socket to take care ofpublic boolean close(boolean forced)
close
クラス内 I2PTunnelTask
public boolean destroy()
destroy
クラス内 I2PTunnelTask
public static void closeSocket(java.net.Socket s)
protected abstract void clientConnectionRun(java.net.Socket s)