Hi,
In mina 2 the event loops are composed of Acceptor/Connector (for
accepting/connecting TCP sessions) and IoProcessor for handling
session read and write events. For each service you need at least one
Acceptor/connector and one IoProcessor, so at least two threads. For a
simple TCP base asynchronous proxy it sould be doable with one thread.

The IoProcessor for TCP and for UDP are totally differents, the TCP
one select TCP client sockets the UDP one handle read write event
passed by the Acceptor because you have only one socket in a UDP
server.

Ayway this logic make the code uber complicated, what I propose :

Two technical event loop construction :
A SelectorProcessor, his work is to select SelectableChannel for IO
event (read, write, accept) and push events to listeners (e.g.
TcpServer for accept events, UdpServer for read events on new
sessions)
A EventProcessor, his work is to process read/write events coming from
SelectorProcessor using session chains with one thread event.

So we can wired SelectorProcessor and EventProcessor like we want,
from just one SelectorProcessor for a one thread logic for quick
server, to multiple SelectorProcessor pushing event to multiple
EventProcessors.

I think it'll make the code really simpler, testable with mock and
more modulable.

Julien

Reply via email to