The architecture is composed of multiple layers that communicate through interfaces. The table below shows the classes that compose the protocol stack:
Interface Implementation ============================================================== HttpNIOEntity* | AbstractHttpNIOEntity* ------------------------------ ------------------------------- ContentEncoder | AbstractContentEncoder ------------------------------ ------------------------------- NHttpServiceHandler | HttpServiceHandler* ------------------------------ ------------------------------- NHttpServerConnection | DefaultNServerConnection ------------------------------ ------------------------------- IOEventDispatch | DefaultServerIOEventDispatch ------------------------------ ------------------------------- ByteChannel | HttpChannel* * Classes provided by this component. Other classes except for ByteChannel are part of HttpCore.
HttpChannel implements ChannelReadObserver
and
ChannelWriter
which hook into LimeWire's NIO
component. The HttpNIOEntity
interface extends the stream
based HttpEntity
interface with an event based NIO
implementation that is supported by HttpServiceHandler
.
The HttpIOSession
class is provided for controlling the
underlying socket and throttling.
Connection are established and intitilized HttpIOReactor
which implements the ConnectingIOReactor
interface.