Class EventPumper

java.lang.Object
net.i2p.router.transport.ntcp.EventPumper
All Implemented Interfaces:
Runnable

class EventPumper
extends Object
implements Runnable
The main NTCP NIO thread.
  • Constructor Details

  • Method Details

    • startPumping

      public void startPumping()
    • stopPumping

      public void stopPumping()
    • isAlive

      public boolean isAlive()
      Selector can take quite a while to close after calling stopPumping()
    • register

      public void register​(ServerSocketChannel chan)
      Register the acceptor. This is only called from NTCPTransport.bindAddress(), so it isn't clear why this needs a queue.
    • registerConnect

      public void registerConnect​(NTCPConnection con)
      Outbound
    • run

      public void run()
      The selector loop. On high-bandwidth routers, this is the thread with the highest CPU usage, so take care to minimize overhead and unnecessary debugging stuff.
      Specified by:
      run in interface Runnable
    • wantsWrite

      public void wantsWrite​(NTCPConnection con, byte[] data)
      Called by the connection when it has data ready to write. If we have bandwidth, calls con.Write() which calls wantsWrite(con). If no bandwidth, calls con.queuedWrite().
    • wantsWrite

      public void wantsWrite​(NTCPConnection con, byte[] data, int off, int len)
      Called by the connection when it has data ready to write. If we have bandwidth, calls con.Write() which calls wantsWrite(con). If no bandwidth, calls con.queuedWrite().
      Since:
      0.9.35 off/len version
    • wantsWrite

      public void wantsWrite​(NTCPConnection con)
      Called by the connection when it has data ready to write (after bw allocation). Only wakeup if new.
    • wantsRead

      public void wantsRead​(NTCPConnection con)
      This is only called from NTCPConnection.complete() if there is more data, which is rare (never?) so we don't need to check for dups or make _wantsRead a Set.
    • releaseBuf

      public static void releaseBuf​(ByteBuffer buf)
      Return a read buffer to the pool. These buffers must be from acquireBuf(), i.e. capacity() == BUF_SIZE. High-frequency path in thread.
    • getIdleTimeout

      public long getIdleTimeout()