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.