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
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
clearInterest
(SelectionKey key, int op) Warning - caller should catch unchecked CancelledKeyExceptionlong
boolean
isAlive()
Selector can take quite a while to close after calling stopPumping()boolean
processWrite
(NTCPConnection con, SelectionKey key) Asynchronous write all buffers to the channel.void
register
(ServerSocketChannel chan) Register the acceptor.void
Outboundstatic void
releaseBuf
(ByteBuffer buf) Return a read buffer to the pool.void
run()
The selector loop.static void
setInterest
(SelectionKey key, int op) Warning - caller should catch unchecked CancelledKeyExceptionvoid
void
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.void
wantsWrite
(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
-
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
-