Package net.i2p.router.transport.ntcp
Class EventPumper
java.lang.Object
net.i2p.router.transport.ntcp.EventPumper
- All Implemented Interfaces:
Runnable
The main NTCP NIO thread.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidblockIP(byte[] ip) Temp.static voidclearInterest(SelectionKey key, int op) Warning - caller should catch unchecked CancelledKeyExceptionlongbooleanisAlive()Selector can take quite a while to close after calling stopPumping()booleanprocessWrite(NTCPConnection con, SelectionKey key) Asynchronous write all buffers to the channel.voidregister(ServerSocketChannel chan) Register the acceptor.voidOutboundstatic voidreleaseBuf(ByteBuffer buf) Return a read buffer to the pool.voidrun()The selector loop.static voidsetInterest(SelectionKey key, int op) Warning - caller should catch unchecked CancelledKeyExceptionvoidvoidvoidwantsRead(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).
-
Constructor Details
-
EventPumper
-
-
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
Register the acceptor. This is only called from NTCPTransport.bindAddress(), so it isn't clear why this needs a queue. -
registerConnect
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
Called by the connection when it has data ready to write (after bw allocation). Only wakeup if new. -
wantsRead
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
Return a read buffer to the pool. These buffers must be from acquireBuf(), i.e. capacity() == BUF_SIZE. High-frequency path in thread. -
processWrite
Asynchronous write all buffers to the channel. This method will disable the interest if no more writes remain. If this returns false, caller MUST call wantsWrite(con)- Parameters:
key- non-null- Returns:
- true if all buffers were completely written, false if buffers remain
- Since:
- 0.9.53
-
blockIP
public void blockIP(byte[] ip) Temp. block inbound from this IP- Since:
- 0.9.58
-
getIdleTimeout
public long getIdleTimeout() -
setInterest
Warning - caller should catch unchecked CancelledKeyException- Throws:
CancelledKeyException- which is unchecked- Since:
- 0.9.53
-
clearInterest
Warning - caller should catch unchecked CancelledKeyException- Throws:
CancelledKeyException- which is unchecked- Since:
- 0.9.53
-