Hi, On Fri, Oct 17, 2014 at 8:15 AM, Monish Gandhi <[email protected]> wrote: > I am trying to understand Jetty's Connector implementation which uses > multiple acceptor/selectors to have non blocking implementation. I saw a > post from Simone where its explained very clearly > http://dev.eclipse.org/mhonarc/lists/jetty-users/msg04751.html > > I could see the Jetty's SelectorManager, AbstractConnector, ServerConnector > implementing the same where we have n acceptor and m selector threads > started. The acceptors are blocking on the ServerSocketChannels accept() > call, each time when the socket connects, acceptor takes the socket and > registers the channel with selector and submits the job to selector > (ManagedSelector' ConcurrentArrayQueue) selector threads would poll the > queue and run the changes. However i am somehow missing one thing, where is > the actual dispatch happening to the Worker threads (the actual Server > threads in QueuedThreadPool). Also let me know if I got some of above > incorrectly
The dispatch happens when calling SelectChannelEndPoint.onSelected() -> getFillInterest().fillable(). This goes back to the callback that the Connection registered with the EndPoint, AbstractConnection.ReadCallback. Here, the state goes (typically) from FILL_INTERESTED to FILLING, and AbstractConnection.FillingState is where the dispatch happens, calling Connection.onFillable() in the dispatched thread. -- Simone Bordet ---- http://cometd.org http://webtide.com http://intalio.com Developer advice, training, services and support from the Jetty & CometD experts. Intalio, the modern way to build business applications. _______________________________________________ jetty-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/jetty-users
