Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-httpclient 
Wiki" for change notification.

The following page has been changed by OlegKalnichevski:
http://wiki.apache.org/jakarta-httpclient/HttpCoreNioApi

------------------------------------------------------------------------------
- = HttpCore NIO API =
+ removed as outdated
  
- HttpCore NIO is based on the I/O Reactor pattern as described by Doug Lea. 
- 
- == Main components ==
- 
- === IOReactor ===
- 
- IOReactor represents an I/O multiplexer capable of accepting incoming 
connection, establishing outgoing connection, 
- and dispatching read/write notifications. IOReactor maintains a set of active 
sessions and also manages closed sessions. 
- IOReactor uses IOEventDispatch in order to communicate with various input 
consumers and output producers.
- 
- IOReactor encapsulates java.nio.channel.Selector
- 
- === IOSession ===
- 
- IOSession contains a socket channel and maintains a conversational state with 
the opposite side of the connection. 
- IOSession usually maintains references to corresponding input consumer and 
output producer and optionally to a protocol 
- processor / worker thread.
- 
- IOSession encapsulates java.nio.channel.SelectionKey
- 
- === IOEventDispatch ===
- 
- IOEventDispatch is a callback interface intended to propagate I/O events to 
various protocol processors. IOEventDispatch 
- reflects the life cycle of an IOSession. Through IOEventDispatch IOReactor 
fires events signaling a creation of a new 
- session, some input/output activity for an active session or completion of a 
session.
- 
- IOEventDispatch serves as a link between the I/O multiplexer and protocol 
processors and is meant to be developed for 
- each specific type of application
- 
- === IOConsumer ===
- 
- IOConsumer represents any arbitrary process interested in consuming incoming 
data. IOConsumer calls IOSession to signal
- its interest in receiving data. IOEventDispatch calls IOConsumer to signal 
availability of input data in the session's socket 
- channel. 
- 
- IOConsumer maintains a reference to java.nio.channel.ByteChannel
- 
- === IOProducer ===
- 
- IOProducer represents any arbitrary process intended to generate outgoing 
data. IOConsumer calls IOSession to signal its 
- interest in sending out data. IOEventDispatch calls IOProducer in order to 
signal readiness of the session's socket channel 
- to accept output data.
- 
- IOProducer maintains a reference to java.nio.channel.ByteChannel
- 
- == Source code ==
- 
- HttpCore NIO source code can be found 
[http://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/trunk/module-nio/
 here ]
- 
- == Examples ==
- 
- These are some code samples demonstrating the use of the API
- 
- Non-blocking single-threaded echo server: 
- 
-   
http://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/nio/examples/ElementalEchoServer.java
- 
- Non-blocking echo server with asynchronous worker threads
- 
-   
http://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/nio/examples/AsyncEchoServer.java
- 
- Asynchronous HTTP server:
- 
-   
http://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/nio/examples/AsyncHttpServerServer.java
- 
- == HttpCore NIO vs MINA ==
- 
- In many ways HttpCore NIO is very similar to MINA. MINA API represents quite 
elegant and natural way of dealing with 
- non-blocking I/O and anyone developing a event-driven I/O transport is bound 
to come up with a similar interface. There are 
- several significant differences as well. HttpCore NIO reactor is 
minimalistic, bare-bone I/O multiplexer. HttpCore NIO does 
- not and will not provide any buffering or threading primitives. It is meant 
to serve as an efficient asynchronous I/O transport 
- for HttpCore and nothing else. Input/output buffering is meant to be 
implemented by data receiver / data transmitter 
- respectively and development of threading primitives is entirely out of 
HttpCore scope.
- 
- If you are interested in supporting multiple protocols on top of a robust, 
flexible and well supported I/O transport mechanism 
- '''please use MINA'''. HttpCore runs perfectly well on top of MINA.
- 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to