Package net.i2p.i2ptunnel
Class I2PTunnelRunner
- java.lang.Object
-
- java.lang.Thread
-
- net.i2p.util.I2PThread
-
- net.i2p.util.I2PAppThread
-
- net.i2p.i2ptunnel.I2PTunnelRunner
-
- All Implemented Interfaces:
Runnable
,I2PSocket.SocketErrorListener
- Direct Known Subclasses:
I2PTunnelHTTPClientRunner
public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErrorListener
A thread that starts two more threads, one to forward traffic in each direction. Warning - not maintained as a stable API for external use.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
I2PTunnelRunner.FailCallback
For use in new constructorstatic interface
I2PTunnelRunner.SuccessCallback
-
Nested classes/interfaces inherited from class net.i2p.util.I2PThread
I2PThread.OOMEventListener
-
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
-
-
Field Summary
Fields Modifier and Type Field Description protected Log
_log
(package private) static int
MAX_PACKET_SIZE
max bytes streamed in a packet - smaller ones might be filled up to this size.(package private) static int
NETWORK_BUFFER_SIZE
-
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
-
Constructor Summary
Constructors Constructor Description I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList)
Deprecated.use FailCallback constructorI2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, Runnable onTimeout)
Deprecated.use FailCallback constructorI2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, I2PTunnelRunner.FailCallback onFail)
Recommended new constructor.I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList)
Deprecated.use FailCallback constructorI2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList, Runnable onTimeout)
Deprecated.use FailCallback constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected void
close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, Socket s, I2PSocket i2ps, Thread t1, Thread t2)
void
errorOccurred()
Deprecated, unimplemented in streaming, never called.long
getLastActivityOn()
Deprecated.unusedprotected InputStream
getSocketIn()
protected OutputStream
getSocketOut()
long
getStartedOn()
When this runner started up transferring databoolean
isFinished()
Deprecated.unusedvoid
run()
void
setSuccessCallback(I2PTunnelRunner.SuccessCallback sc)
Will be called if we get any data back.-
Methods inherited from class net.i2p.util.I2PAppThread
addOOMEventThreadListener, fireOOM, removeOOMEventThreadListener
-
Methods inherited from class net.i2p.util.I2PThread
addOOMEventListener, removeOOMEventListener, start
-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, suspend, toString, yield
-
-
-
-
Field Detail
-
_log
protected final Log _log
-
MAX_PACKET_SIZE
static int MAX_PACKET_SIZE
max bytes streamed in a packet - smaller ones might be filled up to this size. Larger ones are not split (at least not on Sun's impl of BufferedOutputStream), but that is the streaming api's job...
-
NETWORK_BUFFER_SIZE
static final int NETWORK_BUFFER_SIZE
-
-
Constructor Detail
-
I2PTunnelRunner
@Deprecated public I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList)
Deprecated.use FailCallback constructorStarts itself- Parameters:
slock
- the socket lock, non-nullinitialI2PData
- may be nullsockList
- may be null. Caller must add i2ps to the list! It will be removed here on completion. Will synchronize on slock when removing.
-
I2PTunnelRunner
@Deprecated public I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList)
Deprecated.use FailCallback constructorStarts itself- Parameters:
slock
- the socket lock, non-nullinitialI2PData
- may be nullinitialSocketData
- may be nullsockList
- may be null. Caller must add i2ps to the list! It will be removed here on completion. Will synchronize on slock when removing.
-
I2PTunnelRunner
@Deprecated public I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList, Runnable onTimeout)
Deprecated.use FailCallback constructorStarts itself- Parameters:
slock
- the socket lock, non-nullinitialI2PData
- may be nullsockList
- may be null. Caller must add i2ps to the list! It will be removed here on completion. Will synchronize on slock when removing.onTimeout
- May be null. If non-null and no data (except initial data) was received, it will be run before closing s.
-
I2PTunnelRunner
@Deprecated public I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, Runnable onTimeout)
Deprecated.use FailCallback constructorStarts itself- Parameters:
slock
- the socket lock, non-nullinitialI2PData
- may be nullinitialSocketData
- may be nullsockList
- may be null. Caller must add i2ps to the list! It will be removed here on completion. Will synchronize on slock when removing.onTimeout
- May be null. If non-null and no data (except initial data) was received, it will be run before closing s.
-
I2PTunnelRunner
public I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, I2PTunnelRunner.FailCallback onFail)
Recommended new constructor. Does NOT start itself. Caller must call start().- Parameters:
slock
- the socket lock, non-nullinitialI2PData
- may be nullinitialSocketData
- may be nullsockList
- may be null. Caller must add i2ps to the list! It will be removed here on completion. Will synchronize on slock when removing.onFail
- May be null. If non-null and no data (except initial data) was received, it will be run before closing s.
-
-
Method Detail
-
isFinished
@Deprecated public boolean isFinished()
Deprecated.unusedhave we closed at least one (if not both) of the streams [aka we're done running the streams]?
-
getLastActivityOn
@Deprecated public long getLastActivityOn()
Deprecated.unusedWhen was the last data for this runner sent or received? As of 0.9.20, returns -1 always!- Returns:
- date (ms since the epoch), or -1 if no data has been transferred yet
-
getStartedOn
public long getStartedOn()
When this runner started up transferring data
-
setSuccessCallback
public void setSuccessCallback(I2PTunnelRunner.SuccessCallback sc)
Will be called if we get any data back. This is called after the first byte of data is received, not on completion. Only one of SuccessCallback, onTimeout, or onFail will be called.- Since:
- 0.9.39
-
getSocketIn
protected InputStream getSocketIn() throws IOException
- Throws:
IOException
-
getSocketOut
protected OutputStream getSocketOut() throws IOException
- Throws:
IOException
-
close
protected void close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException
- Parameters:
out
- may be nullin
- may be nulli2pout
- may be nulli2pin
- may be nullt1
- may be nullt2
- may be null- Throws:
InterruptedException
-
errorOccurred
public void errorOccurred()
Deprecated, unimplemented in streaming, never called.- Specified by:
errorOccurred
in interfaceI2PSocket.SocketErrorListener
-
-