Package net.i2p.router.transport.ntcp
Class EventPumper
- java.lang.Object
-
- net.i2p.router.transport.ntcp.EventPumper
-
-
Constructor Summary
Constructors Constructor Description EventPumper(RouterContext ctx, NTCPTransport transport)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description longgetIdleTimeout()booleanisAlive()Selector can take quite a while to close after calling stopPumping()voidregister(ServerSocketChannel chan)Register the acceptor.voidregisterConnect(NTCPConnection con)Outboundstatic voidreleaseBuf(ByteBuffer buf)Return a read buffer to the pool.voidrun()The selector loop.voidstartPumping()voidstopPumping()voidwantsRead(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.voidwantsWrite(NTCPConnection con)Called by the connection when it has data ready to write (after bw allocation).voidwantsWrite(NTCPConnection con, byte[] data)Called by the connection when it has data ready to write.voidwantsWrite(NTCPConnection con, byte[] data, int off, int len)Called by the connection when it has data ready to write.
-
-
-
Constructor Detail
-
EventPumper
public EventPumper(RouterContext ctx, NTCPTransport transport)
-
-
Method Detail
-
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.
-
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()
-
-