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 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
-
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
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 Details
-
_log
-
MAX_PACKET_SIZE
static int MAX_PACKET_SIZEmax 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 Details
-
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 Details
-
isFinished
Deprecated.unusedhave we closed at least one (if not both) of the streams [aka we're done running the streams]? -
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
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
- Throws:
IOException
-
getSocketOut
- Throws:
IOException
-
run
public void run() -
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
-