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]
