Class 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.
  • Field Details

    • _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 Details

    • I2PTunnelRunner

      @Deprecated public I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList)
      Deprecated.
      use FailCallback constructor
      Starts itself
      Parameters:
      slock - the socket lock, non-null
      initialI2PData - may be null
      sockList - 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 constructor
      Starts itself
      Parameters:
      slock - the socket lock, non-null
      initialI2PData - may be null
      initialSocketData - may be null
      sockList - 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 constructor
      Starts itself
      Parameters:
      slock - the socket lock, non-null
      initialI2PData - may be null
      sockList - 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 constructor
      Starts itself
      Parameters:
      slock - the socket lock, non-null
      initialI2PData - may be null
      initialSocketData - may be null
      sockList - 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-null
      initialI2PData - may be null
      initialSocketData - may be null
      sockList - 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 public boolean isFinished()
      Deprecated.
      unused
      have we closed at least one (if not both) of the streams [aka we're done running the streams]?
    • getLastActivityOn

      @Deprecated public long getLastActivityOn()
      Deprecated.
      unused
      When 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
    • run

      public void run()
      Specified by:
      run in interface Runnable
      Overrides:
      run in class I2PThread
    • 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 null
      in - may be null
      i2pout - may be null
      i2pin - may be null
      t1 - may be null
      t2 - may be null
      Throws:
      InterruptedException
    • errorOccurred

      public void errorOccurred()
      Deprecated, unimplemented in streaming, never called.
      Specified by:
      errorOccurred in interface I2PSocket.SocketErrorListener