DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
- The AcceptingThreads remains largely the same
- Accepts incoming connections from socket.
- Creates the connection
- Makes the SocketChannel available to a SelectingThread (add to map? and bump the selector??)
- A SelectingThread owns the selector
- on each iteration it registers the selector for all socket channels except those who are already scheduled.
- OP_READ flag raised for all. OP_WRITE needs to be raised if the connection was unable to complete its last write
- calls the blocking Selector#select() passing the shortest idle timeout of any connection as the timeout argument
- when it returns
- create/schedule connection tasks on the io worker pool for each ready channel
- if the ready set didn't include our connection we identified with the shortest idle time then we need to schedule it anyway
- if the worker pool still now has no free executors then we should block until task(s) finish to stop us spinning
- on each iteration it registers the selector for all socket channels except those who are already scheduled.
- NonBlockingSenderReceiver
- No longer a thread.
- Submittable job that write/read/write for a given number of iterations(?).
- IoWorkerTheadPool
- How big am I?
- Who owns me?
- How do I get shutdown?
...
- ?
Phase 3 - Change Broker to use have virtual host scope IO thread pools