Modified: directory/network/trunk/src/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java?rev=359355&r1=359354&r2=359355&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java Tue Dec 27 18:49:31 2005
@@ -1,106 +1,106 @@
-package org.apache.mina.transport.vmpipe.support;
-
-import org.apache.mina.common.ByteBuffer;
-import org.apache.mina.common.CloseFuture;
-import org.apache.mina.common.IoSession;
-import org.apache.mina.common.IoFilter.WriteRequest;
-import org.apache.mina.common.support.AbstractIoFilterChain;
-
-public class VmPipeFilterChain extends AbstractIoFilterChain {
-
- public VmPipeFilterChain( IoSession session )
- {
- super( session );
- }
-
- public void messageReceived( IoSession session, Object message )
- {
- VmPipeSessionImpl s = ( VmPipeSessionImpl ) session;
- synchronized( s.lock )
- {
- if( !s.getTrafficMask().isReadable() )
- {
- synchronized( s.pendingDataQueue )
- {
- s.pendingDataQueue.push( message );
- }
- }
- else
- {
- int byteCount = 1;
- if( message instanceof ByteBuffer )
- {
- byteCount = ( ( ByteBuffer ) message ).remaining();
- }
-
- s.increaseReadBytes( byteCount );
-
- super.messageReceived( s, message );
- }
- }
- }
-
- protected void doWrite( IoSession session, WriteRequest writeRequest )
- {
- VmPipeSessionImpl s = ( VmPipeSessionImpl ) session;
- synchronized( s.lock )
- {
- if( s.isConnected() )
- {
-
- if( !s.getTrafficMask().isWritable() )
- {
- synchronized( s.pendingDataQueue )
- {
- s.pendingDataQueue.push( writeRequest );
- }
- }
- else
- {
-
- Object message = writeRequest.getMessage();
-
- int byteCount = 1;
- Object messageCopy = message;
- if( message instanceof ByteBuffer )
- {
- ByteBuffer rb = ( ByteBuffer ) message;
- byteCount = rb.remaining();
- ByteBuffer wb = ByteBuffer.allocate( rb.remaining() );
- wb.put( rb );
- wb.flip();
- messageCopy = wb;
- }
-
- s.increaseWrittenBytes( byteCount );
- s.increaseWrittenWriteRequests();
-
- ( ( VmPipeFilterChain ) s.getFilterChain() ).messageSent( s, message );
- ( ( VmPipeFilterChain ) s.remoteSession.getFilterChain() )
- .messageReceived( s.remoteSession, messageCopy );
-
- writeRequest.getFuture().setWritten( true );
- }
- }
- else
- {
- writeRequest.getFuture().setWritten( false );
- }
- }
- }
-
- protected void doClose( IoSession session, CloseFuture closeFuture )
- {
- VmPipeSessionImpl s = ( VmPipeSessionImpl ) session;
- synchronized( s.lock )
- {
- if( !closeFuture.isClosed() )
- {
- ( ( VmPipeFilterChain ) s.getFilterChain() ).sessionClosed( session );
- closeFuture.setClosed();
- s.remoteSession.close();
- }
- }
- }
-
-}
+package org.apache.mina.transport.vmpipe.support;
+
+import org.apache.mina.common.ByteBuffer;
+import org.apache.mina.common.CloseFuture;
+import org.apache.mina.common.IoSession;
+import org.apache.mina.common.IoFilter.WriteRequest;
+import org.apache.mina.common.support.AbstractIoFilterChain;
+
+public class VmPipeFilterChain extends AbstractIoFilterChain {
+
+ public VmPipeFilterChain( IoSession session )
+ {
+ super( session );
+ }
+
+ public void messageReceived( IoSession session, Object message )
+ {
+ VmPipeSessionImpl s = ( VmPipeSessionImpl ) session;
+ synchronized( s.lock )
+ {
+ if( !s.getTrafficMask().isReadable() )
+ {
+ synchronized( s.pendingDataQueue )
+ {
+ s.pendingDataQueue.push( message );
+ }
+ }
+ else
+ {
+ int byteCount = 1;
+ if( message instanceof ByteBuffer )
+ {
+ byteCount = ( ( ByteBuffer ) message ).remaining();
+ }
+
+ s.increaseReadBytes( byteCount );
+
+ super.messageReceived( s, message );
+ }
+ }
+ }
+
+ protected void doWrite( IoSession session, WriteRequest writeRequest )
+ {
+ VmPipeSessionImpl s = ( VmPipeSessionImpl ) session;
+ synchronized( s.lock )
+ {
+ if( s.isConnected() )
+ {
+
+ if( !s.getTrafficMask().isWritable() )
+ {
+ synchronized( s.pendingDataQueue )
+ {
+ s.pendingDataQueue.push( writeRequest );
+ }
+ }
+ else
+ {
+
+ Object message = writeRequest.getMessage();
+
+ int byteCount = 1;
+ Object messageCopy = message;
+ if( message instanceof ByteBuffer )
+ {
+ ByteBuffer rb = ( ByteBuffer ) message;
+ byteCount = rb.remaining();
+ ByteBuffer wb = ByteBuffer.allocate( rb.remaining() );
+ wb.put( rb );
+ wb.flip();
+ messageCopy = wb;
+ }
+
+ s.increaseWrittenBytes( byteCount );
+ s.increaseWrittenWriteRequests();
+
+ ( ( VmPipeFilterChain ) s.getFilterChain() ).messageSent( s, message );
+ ( ( VmPipeFilterChain ) s.remoteSession.getFilterChain() )
+ .messageReceived( s.remoteSession, messageCopy );
+
+ writeRequest.getFuture().setWritten( true );
+ }
+ }
+ else
+ {
+ writeRequest.getFuture().setWritten( false );
+ }
+ }
+ }
+
+ protected void doClose( IoSession session, CloseFuture closeFuture )
+ {
+ VmPipeSessionImpl s = ( VmPipeSessionImpl ) session;
+ synchronized( s.lock )
+ {
+ if( !closeFuture.isClosed() )
+ {
+ ( ( VmPipeFilterChain ) s.getFilterChain() ).sessionClosed( session );
+ closeFuture.setClosed();
+ s.remoteSession.close();
+ }
+ }
+ }
+
+}
Modified: directory/network/trunk/src/test/org/apache/mina/common/DefaultIoFilterChainBuilderTest.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/test/org/apache/mina/common/DefaultIoFilterChainBuilderTest.java?rev=359355&r1=359354&r2=359355&view=diff
==============================================================================
--- directory/network/trunk/src/test/org/apache/mina/common/DefaultIoFilterChainBuilderTest.java (original)
+++ directory/network/trunk/src/test/org/apache/mina/common/DefaultIoFilterChainBuilderTest.java Tue Dec 27 18:49:31 2005
@@ -1,153 +1,153 @@
-/*
- * @(#) $Id: ExceptionMonitor.java 326586 2005-10-19 15:50:29Z trustin $
- *
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.mina.common;
-
-import java.util.Iterator;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.apache.mina.common.IoFilterChain.Entry;
-
-/**
- * Tests {@link DefaultIoFilterChainBuilder}.
- *
- * @author The Apache Directory Project (dev@directory.apache.org)
- * @version $Rev$, $Date$
- */
-public class DefaultIoFilterChainBuilderTest extends TestCase
-{
- public static void main( String[] args )
- {
- junit.textui.TestRunner.run( DefaultIoFilterChainBuilderTest.class );
- }
-
- protected void setUp() throws Exception
- {
- }
-
- protected void tearDown() throws Exception
- {
- }
-
- public void testAdd() throws Exception
- {
- DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
-
- builder.addFirst( "A", new IoFilterAdapter() );
- builder.addLast( "B", new IoFilterAdapter() );
- builder.addFirst( "C", new IoFilterAdapter() );
- builder.addLast( "D", new IoFilterAdapter() );
- builder.addBefore( "B", "E", new IoFilterAdapter() );
- builder.addBefore( "C", "F", new IoFilterAdapter() );
- builder.addAfter( "B", "G", new IoFilterAdapter() );
- builder.addAfter( "D", "H", new IoFilterAdapter() );
-
- String actual = "";
- for( Iterator i = builder.getAll().iterator(); i.hasNext(); )
- {
- Entry e = ( Entry ) i.next();
- actual += e.getName();
- }
-
- Assert.assertEquals( "FCAEBGDH", actual );
- }
-
- public void testGet() throws Exception
- {
- DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
-
- IoFilter filterA = new IoFilterAdapter();
- IoFilter filterB = new IoFilterAdapter();
- IoFilter filterC = new IoFilterAdapter();
- IoFilter filterD = new IoFilterAdapter();
-
- builder.addFirst( "A", filterA );
- builder.addLast( "B", filterB );
- builder.addBefore( "B", "C", filterC );
- builder.addAfter( "A", "D", filterD );
-
- Assert.assertSame( filterA, builder.get( "A" ) );
- Assert.assertSame( filterB, builder.get( "B" ) );
- Assert.assertSame( filterC, builder.get( "C" ) );
- Assert.assertSame( filterD, builder.get( "D" ) );
- }
-
- public void testRemove() throws Exception
- {
- DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
-
- builder.addLast( "A", new IoFilterAdapter() );
- builder.addLast( "B", new IoFilterAdapter() );
- builder.addLast( "C", new IoFilterAdapter() );
- builder.addLast( "D", new IoFilterAdapter() );
- builder.addLast( "E", new IoFilterAdapter() );
-
- builder.remove( "A" );
- builder.remove( "E" );
- builder.remove( "C" );
- builder.remove( "B" );
- builder.remove( "D" );
-
- Assert.assertEquals( 0, builder.getAll().size() );
- }
-
- public void testClear() throws Exception
- {
- DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
-
- builder.addLast( "A", new IoFilterAdapter() );
- builder.addLast( "B", new IoFilterAdapter() );
- builder.addLast( "C", new IoFilterAdapter() );
- builder.addLast( "D", new IoFilterAdapter() );
- builder.addLast( "E", new IoFilterAdapter() );
-
- builder.clear();
-
- Assert.assertEquals( 0, builder.getAll().size() );
- }
-
- public void testToString()
- {
- DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
-
- // When the chain is empty
- Assert.assertEquals( "{ empty }", builder.toString() );
-
- // When there's one filter
- builder.addLast( "A", new IoFilterAdapter()
- {
- public String toString()
- {
- return "B";
- }
- } );
- Assert.assertEquals( "{ (A:B) }", builder.toString() );
-
- // When there are two
- builder.addLast( "C", new IoFilterAdapter()
- {
- public String toString()
- {
- return "D";
- }
- } );
- Assert.assertEquals( "{ (A:B), (C:D) }", builder.toString() );
- }
-}
+/*
+ * @(#) $Id: ExceptionMonitor.java 326586 2005-10-19 15:50:29Z trustin $
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.mina.common;
+
+import java.util.Iterator;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.mina.common.IoFilterChain.Entry;
+
+/**
+ * Tests {@link DefaultIoFilterChainBuilder}.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public class DefaultIoFilterChainBuilderTest extends TestCase
+{
+ public static void main( String[] args )
+ {
+ junit.textui.TestRunner.run( DefaultIoFilterChainBuilderTest.class );
+ }
+
+ protected void setUp() throws Exception
+ {
+ }
+
+ protected void tearDown() throws Exception
+ {
+ }
+
+ public void testAdd() throws Exception
+ {
+ DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
+
+ builder.addFirst( "A", new IoFilterAdapter() );
+ builder.addLast( "B", new IoFilterAdapter() );
+ builder.addFirst( "C", new IoFilterAdapter() );
+ builder.addLast( "D", new IoFilterAdapter() );
+ builder.addBefore( "B", "E", new IoFilterAdapter() );
+ builder.addBefore( "C", "F", new IoFilterAdapter() );
+ builder.addAfter( "B", "G", new IoFilterAdapter() );
+ builder.addAfter( "D", "H", new IoFilterAdapter() );
+
+ String actual = "";
+ for( Iterator i = builder.getAll().iterator(); i.hasNext(); )
+ {
+ Entry e = ( Entry ) i.next();
+ actual += e.getName();
+ }
+
+ Assert.assertEquals( "FCAEBGDH", actual );
+ }
+
+ public void testGet() throws Exception
+ {
+ DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
+
+ IoFilter filterA = new IoFilterAdapter();
+ IoFilter filterB = new IoFilterAdapter();
+ IoFilter filterC = new IoFilterAdapter();
+ IoFilter filterD = new IoFilterAdapter();
+
+ builder.addFirst( "A", filterA );
+ builder.addLast( "B", filterB );
+ builder.addBefore( "B", "C", filterC );
+ builder.addAfter( "A", "D", filterD );
+
+ Assert.assertSame( filterA, builder.get( "A" ) );
+ Assert.assertSame( filterB, builder.get( "B" ) );
+ Assert.assertSame( filterC, builder.get( "C" ) );
+ Assert.assertSame( filterD, builder.get( "D" ) );
+ }
+
+ public void testRemove() throws Exception
+ {
+ DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
+
+ builder.addLast( "A", new IoFilterAdapter() );
+ builder.addLast( "B", new IoFilterAdapter() );
+ builder.addLast( "C", new IoFilterAdapter() );
+ builder.addLast( "D", new IoFilterAdapter() );
+ builder.addLast( "E", new IoFilterAdapter() );
+
+ builder.remove( "A" );
+ builder.remove( "E" );
+ builder.remove( "C" );
+ builder.remove( "B" );
+ builder.remove( "D" );
+
+ Assert.assertEquals( 0, builder.getAll().size() );
+ }
+
+ public void testClear() throws Exception
+ {
+ DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
+
+ builder.addLast( "A", new IoFilterAdapter() );
+ builder.addLast( "B", new IoFilterAdapter() );
+ builder.addLast( "C", new IoFilterAdapter() );
+ builder.addLast( "D", new IoFilterAdapter() );
+ builder.addLast( "E", new IoFilterAdapter() );
+
+ builder.clear();
+
+ Assert.assertEquals( 0, builder.getAll().size() );
+ }
+
+ public void testToString()
+ {
+ DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder();
+
+ // When the chain is empty
+ Assert.assertEquals( "{ empty }", builder.toString() );
+
+ // When there's one filter
+ builder.addLast( "A", new IoFilterAdapter()
+ {
+ public String toString()
+ {
+ return "B";
+ }
+ } );
+ Assert.assertEquals( "{ (A:B) }", builder.toString() );
+
+ // When there are two
+ builder.addLast( "C", new IoFilterAdapter()
+ {
+ public String toString()
+ {
+ return "D";
+ }
+ } );
+ Assert.assertEquals( "{ (A:B), (C:D) }", builder.toString() );
+ }
+}
Modified: directory/network/trunk/xdocs/features.xml
URL: http://svn.apache.org/viewcvs/directory/network/trunk/xdocs/features.xml?rev=359355&r1=359354&r2=359355&view=diff
==============================================================================
--- directory/network/trunk/xdocs/features.xml (original)
+++ directory/network/trunk/xdocs/features.xml Tue Dec 27 18:49:31 2005
@@ -1,44 +1,44 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document>
- <properties>
- <author email="trustin@apache.org">Trustin Lee</author>
- <title>Features</title>
- </properties>
-
- <body>
- <section name="Features">
- <p>
- MINA is a simple yet full-featured network application framework
- which provides:
- <ul>
- <li>Unified API for various transport types:
- <ul>
- <li>TCP/IP</li>
- <li>UDP/IP</li>
- <li>In-VM pipe communication</li>
- <li>You can implement your own!</li>
- </ul></li>
- <li>Low-level and high-level API:
- <ul>
- <li>Low-level: uses ByteBuffers</li>
- <li>High-level: uses user-defined message objects and codecs</li>
- </ul></li>
- <li>Stream-based I/O support via <code>StreamIoHandler</code></li>
- <li>Filter interface as an extension point; similar to <a href="http://java.sun.com/products/servlet/Filters.html">Servlet filters</a>
- <ul>
- <li>SSL support via <code>SSLFilter</code> thanks to Java 5 <code>SSLEngine</code></li>
- <li>Thread pools are implemented as filters so that users can customize thread model.</li>
- </ul></li>
- <li>Unit testability using <a href="http://www.mockobjects.com/">mock objects</a>,</li>
- <li>JMX managability, (coming soon)</li>
- <li>Traffic throttling, (coming soon)</li>
- <li>Overload shielding, (coming soon)</li>
- <li>Integration with well known containers such as Spring
- and OSGi, (coming soon)</li>
- <li>Smooth migration from Netty, a popular NIO framework.
- (See <a href="http://gleamynode.net/dev/tl-netty2-example-sumup/docs/">Netty Tutorial</a>)</li>
- </ul>
- </p>
- </section>
- </body>
-</document>
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+ <properties>
+ <author email="trustin@apache.org">Trustin Lee</author>
+ <title>Features</title>
+ </properties>
+
+ <body>
+ <section name="Features">
+ <p>
+ MINA is a simple yet full-featured network application framework
+ which provides:
+ <ul>
+ <li>Unified API for various transport types:
+ <ul>
+ <li>TCP/IP</li>
+ <li>UDP/IP</li>
+ <li>In-VM pipe communication</li>
+ <li>You can implement your own!</li>
+ </ul></li>
+ <li>Low-level and high-level API:
+ <ul>
+ <li>Low-level: uses ByteBuffers</li>
+ <li>High-level: uses user-defined message objects and codecs</li>
+ </ul></li>
+ <li>Stream-based I/O support via <code>StreamIoHandler</code></li>
+ <li>Filter interface as an extension point; similar to <a href="http://java.sun.com/products/servlet/Filters.html">Servlet filters</a>
+ <ul>
+ <li>SSL support via <code>SSLFilter</code> thanks to Java 5 <code>SSLEngine</code></li>
+ <li>Thread pools are implemented as filters so that users can customize thread model.</li>
+ </ul></li>
+ <li>Unit testability using <a href="http://www.mockobjects.com/">mock objects</a>,</li>
+ <li>JMX managability, (coming soon)</li>
+ <li>Traffic throttling, (coming soon)</li>
+ <li>Overload shielding, (coming soon)</li>
+ <li>Integration with well known containers such as Spring
+ and OSGi, (coming soon)</li>
+ <li>Smooth migration from Netty, a popular NIO framework.
+ (See <a href="http://gleamynode.net/dev/tl-netty2-example-sumup/docs/">Netty Tutorial</a>)</li>
+ </ul>
+ </p>
+ </section>
+ </body>
+</document>
Modified: directory/network/trunk/xdocs/getting_started.xml
URL: http://svn.apache.org/viewcvs/directory/network/trunk/xdocs/getting_started.xml?rev=359355&r1=359354&r2=359355&view=diff
==============================================================================
--- directory/network/trunk/xdocs/getting_started.xml (original)
+++ directory/network/trunk/xdocs/getting_started.xml Tue Dec 27 18:49:31 2005
@@ -1,84 +1,84 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document>
- <properties>
- <author email="trustin@apache.org">Trustin Lee</author>
- <title>Getting Started</title>
- </properties>
-
- <body>
- <section name="Getting Started">
- <p>
- Must-reads:
- <ul>
- <li>Introduction to MINA (from ApacheCon US 2005)
- <ul>
- <li><a href="mina.ppt" target="_blank">PPT version with animations</a></li>
- <li><a href="mina.pdf" target="_blank">PDF version without animations</a></li>
- <li><a href="demo.htm" target="_blank">Demo movie</a></li>
- </ul>
- </li>
- <li><a href="http://wiki.apache.org/directory/MinaTutorial" target="_blank">MINA Tutorial</a></li>
- </ul>
- </p>
-
- <subsection name="Examples">
- <p>
- You'll learn faster with
- <a target="_blank" href="xref-examples/index.html">examples</a>
- referring to
- <a target="_blank" href="apidocs/index.html">JavaDocs</a>.
- <table>
- <tr>
- <th>Name</th>
- <th>Feature it demonstrates</th>
- <th>Side</th>
- </tr>
- <tr>
- <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/reverser/package-summary.html">Reverser</a></td>
- <td>High-level protocol layer</td>
- <td>Server</td>
- </tr>
- <tr>
- <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/sumup/package-summary.html">SumUp server</a></td>
- <td>High-level protocol layer and DemuxingProtocolCodec</td>
- <td>Both</td>
- </tr>
- <tr>
- <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/echoserver/package-summary.html">Echo server</a></td>
- <td>Low-level I/O layer and SSL support</td>
- <td>Server</td>
- </tr>
- <tr>
- <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/netcat/package-summary.html">NetCat</a></td>
- <td>Low-level I/O layer</td>
- <td>Client</td>
- </tr>
- <tr>
- <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/httpserver/package-summary.html">HTTP server</a></td>
- <td>Stream-based synchronous I/O support.</td>
- <td>Server</td>
- </tr>
- <tr>
- <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/tennis/package-summary.html">Tennis</a></td>
- <td>In-VM pipe communication support in protocol layer.</td>
- <td>Both</td>
- </tr>
- </table>
- </p>
- </subsection>
-
- <subsection name="Source code">
- <p>
- Source code:
-<source>
-$ svn co https://svn.apache.org/repos/asf/directory/network/trunk mina
-$ cd mina
-$ maven jar # Build JAR
-$ maven site # Generate documentation
-$ maven eclipse # Generate Eclipse project file if you want
-</source>
- </p>
- </subsection>
- </section>
- </body>
-</document>
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+ <properties>
+ <author email="trustin@apache.org">Trustin Lee</author>
+ <title>Getting Started</title>
+ </properties>
+
+ <body>
+ <section name="Getting Started">
+ <p>
+ Must-reads:
+ <ul>
+ <li>Introduction to MINA (from ApacheCon US 2005)
+ <ul>
+ <li><a href="mina.ppt" target="_blank">PPT version with animations</a></li>
+ <li><a href="mina.pdf" target="_blank">PDF version without animations</a></li>
+ <li><a href="demo.htm" target="_blank">Demo movie</a></li>
+ </ul>
+ </li>
+ <li><a href="http://wiki.apache.org/directory/MinaTutorial" target="_blank">MINA Tutorial</a></li>
+ </ul>
+ </p>
+
+ <subsection name="Examples">
+ <p>
+ You'll learn faster with
+ <a target="_blank" href="xref-examples/index.html">examples</a>
+ referring to
+ <a target="_blank" href="apidocs/index.html">JavaDocs</a>.
+ <table>
+ <tr>
+ <th>Name</th>
+ <th>Feature it demonstrates</th>
+ <th>Side</th>
+ </tr>
+ <tr>
+ <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/reverser/package-summary.html">Reverser</a></td>
+ <td>High-level protocol layer</td>
+ <td>Server</td>
+ </tr>
+ <tr>
+ <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/sumup/package-summary.html">SumUp server</a></td>
+ <td>High-level protocol layer and DemuxingProtocolCodec</td>
+ <td>Both</td>
+ </tr>
+ <tr>
+ <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/echoserver/package-summary.html">Echo server</a></td>
+ <td>Low-level I/O layer and SSL support</td>
+ <td>Server</td>
+ </tr>
+ <tr>
+ <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/netcat/package-summary.html">NetCat</a></td>
+ <td>Low-level I/O layer</td>
+ <td>Client</td>
+ </tr>
+ <tr>
+ <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/httpserver/package-summary.html">HTTP server</a></td>
+ <td>Stream-based synchronous I/O support.</td>
+ <td>Server</td>
+ </tr>
+ <tr>
+ <td><a target="classFrame" href="xref-examples/org/apache/mina/examples/tennis/package-summary.html">Tennis</a></td>
+ <td>In-VM pipe communication support in protocol layer.</td>
+ <td>Both</td>
+ </tr>
+ </table>
+ </p>
+ </subsection>
+
+ <subsection name="Source code">
+ <p>
+ Source code:
+<source>
+$ svn co https://svn.apache.org/repos/asf/directory/network/trunk mina
+$ cd mina
+$ maven jar # Build JAR
+$ maven site # Generate documentation
+$ maven eclipse # Generate Eclipse project file if you want
+</source>
+ </p>
+ </subsection>
+ </section>
+ </body>
+</document>
Modified: directory/network/trunk/xdocs/history.xml
URL: http://svn.apache.org/viewcvs/directory/network/trunk/xdocs/history.xml?rev=359355&r1=359354&r2=359355&view=diff
==============================================================================
--- directory/network/trunk/xdocs/history.xml (original)
+++ directory/network/trunk/xdocs/history.xml Tue Dec 27 18:49:31 2005
@@ -1,51 +1,51 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document>
- <properties>
- <author email="trustin@apache.org">Trustin Lee</author>
- <title>History</title>
- </properties>
-
- <body>
- <section name="History">
- <p>
- by Trustin Lee (trustin at apache dot org)
- </p>
- <p>
- In June 2004, I released a network application framework,
- '<a href="http://gleamynode.net/dev/tl-netty2/docs/" target="_blank">Netty2</a>'.
- It was the first network application framework that provides event-based
- architecture in Java community. It attracted network application
- programmers because of its simplicity and ease of use. As Netty2
- community grows up, its problems also arose. Netty2 didnât work fine
- with text protocols and had severe architectural flaw that prevents users
- from using it for applications with many concurrent clients.
- </p>
- <p>
- Quite large amount of information was collected about what users like
- about Netty2 and what improvements they want from it for 6 months. It
- was clear they like its ease of use and unit-testability. They wanted
- support for UDP/IP and text protocols. I had to invent cleaner, more
- flexible, and more extensible API so that it is easy to learn yet
- full-featured.
- </p>
- <p>
- In September 2004, I joined the Apache Directory team to improve
- another network application framework, Apache SEDA. It was based
- on generic event model with predefined stages. I liked its main idea,
- but its core was too abstract to call it a network application
- framework. I saw many highly abstract but dead frameworks claiming
- they can do whatever users want, and it was one of them. So I urged
- to create a new network application framework âMINAâ which is based on
- my idea on Netty2-NG.
- </p>
- <p>
- Although there was some competition between next generations of
- Apache SEDA, MINA has finally won and it is now the only network
- application framework our team uses. We have implemented several
- complex protocols such as LDAP, Kerberos, DNS and NTP, and realized
- that implementing protocols can be a lot of fun instead of tedious
- coding.
- </p>
- </section>
- </body>
-</document>
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+ <properties>
+ <author email="trustin@apache.org">Trustin Lee</author>
+ <title>History</title>
+ </properties>
+
+ <body>
+ <section name="History">
+ <p>
+ by Trustin Lee (trustin at apache dot org)
+ </p>
+ <p>
+ In June 2004, I released a network application framework,
+ '<a href="http://gleamynode.net/dev/tl-netty2/docs/" target="_blank">Netty2</a>'.
+ It was the first network application framework that provides event-based
+ architecture in Java community. It attracted network application
+ programmers because of its simplicity and ease of use. As Netty2
+ community grows up, its problems also arose. Netty2 didnât work fine
+ with text protocols and had severe architectural flaw that prevents users
+ from using it for applications with many concurrent clients.
+ </p>
+ <p>
+ Quite large amount of information was collected about what users like
+ about Netty2 and what improvements they want from it for 6 months. It
+ was clear they like its ease of use and unit-testability. They wanted
+ support for UDP/IP and text protocols. I had to invent cleaner, more
+ flexible, and more extensible API so that it is easy to learn yet
+ full-featured.
+ </p>
+ <p>
+ In September 2004, I joined the Apache Directory team to improve
+ another network application framework, Apache SEDA. It was based
+ on generic event model with predefined stages. I liked its main idea,
+ but its core was too abstract to call it a network application
+ framework. I saw many highly abstract but dead frameworks claiming
+ they can do whatever users want, and it was one of them. So I urged
+ to create a new network application framework âMINAâ which is based on
+ my idea on Netty2-NG.
+ </p>
+ <p>
+ Although there was some competition between next generations of
+ Apache SEDA, MINA has finally won and it is now the only network
+ application framework our team uses. We have implemented several
+ complex protocols such as LDAP, Kerberos, DNS and NTP, and realized
+ that implementing protocols can be a lot of fun instead of tedious
+ coding.
+ </p>
+ </section>
+ </body>
+</document>
Modified: directory/network/trunk/xdocs/index.xml
URL: http://svn.apache.org/viewcvs/directory/network/trunk/xdocs/index.xml?rev=359355&r1=359354&r2=359355&view=diff
==============================================================================
--- directory/network/trunk/xdocs/index.xml (original)
+++ directory/network/trunk/xdocs/index.xml Tue Dec 27 18:49:31 2005
@@ -1,26 +1,26 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document>
- <properties>
- <author email="trustin@apache.org">Trustin Lee</author>
- <title>Overview</title>
- </properties>
-
- <body>
- <section name="Overview">
- <p>
- MINA (Multipurpose Infrastructure for Network Applications) is a
- network application framework which helps users develop high
- performance and high scalability network applications easily.
-
- <ul>
- <li><a href="features.html">Feature List</a></li>
- <li><a href="testimonials.html">Testimonials</a></li>
- <li><a href="getting_started.html">Getting Started</a></li>
- <li><a href="http://svn.apache.org/repository/directory-network/">Downloads</a></li>
- <li><a href="apidocs/index.html">JavaDocs</a></li>
- <li><a href="faq.html">F.A.Q</a></li>
- </ul>
- </p>
- </section>
- </body>
-</document>
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+ <properties>
+ <author email="trustin@apache.org">Trustin Lee</author>
+ <title>Overview</title>
+ </properties>
+
+ <body>
+ <section name="Overview">
+ <p>
+ MINA (Multipurpose Infrastructure for Network Applications) is a
+ network application framework which helps users develop high
+ performance and high scalability network applications easily.
+
+ <ul>
+ <li><a href="features.html">Feature List</a></li>
+ <li><a href="testimonials.html">Testimonials</a></li>
+ <li><a href="getting_started.html">Getting Started</a></li>
+ <li><a href="http://svn.apache.org/repository/directory-network/">Downloads</a></li>
+ <li><a href="apidocs/index.html">JavaDocs</a></li>
+ <li><a href="faq.html">F.A.Q</a></li>
+ </ul>
+ </p>
+ </section>
+ </body>
+</document>
Modified: directory/network/trunk/xdocs/navigation.xml
URL: http://svn.apache.org/viewcvs/directory/network/trunk/xdocs/navigation.xml?rev=359355&r1=359354&r2=359355&view=diff
==============================================================================
--- directory/network/trunk/xdocs/navigation.xml (original)
+++ directory/network/trunk/xdocs/navigation.xml Tue Dec 27 18:49:31 2005
@@ -1,53 +1,53 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project>
-
- <title>MINA</title>
-
- <body>
- <links>
- <item name="Directory" href="http://directory.apache.org/" />
- <item name="ApacheDS" href="http://directory.apache.org/subprojects/apacheds/"/>
- <item name="LDAP" href="http://directory.apache.org/subprojects/ldap.html"/>
- <item name="Naming" href="http://directory.apache.org/subprojects/naming/"/>
- <item name="ASN.1" href="http://directory.apache.org/subprojects/asn1/"/>
- <item name="Kerberos" href="http://directory.apache.org/subprojects/"/>
- <item name="AuthX" href="http://directory.apache.org/subprojects/authx/"/>
- <item name="MINA" href="http://directory.apache.org/subprojects/network/"/>
- <item name="Protocols" href="http://directory.apache.org/subprojects/providers.html"/>
- </links>
-
- <menu name="Stable Versions">
- <item name="0.8" href="http://directory.apache.org/subprojects/network/branches/0.8/"/>
- </menu>
-
- <menu name="MINA">
- <item name="Overview" href="/index.html"/>
- <item name="Features" href="/features.html"/>
- <item name="Testimonials" href="/testimonials.html"/>
- <item name="Getting Started" href="/getting_started.html"/>
- <item name="Downloads" href="http://svn.apache.org/repository/directory-network/"/>
- <item name="F.A.Q" href="/faq.html"/>
- <item name="Roadmap" href="/roadmap.html"/>
- <item name="Changes" href="http://issues.apache.org/jira/browse/DIRMINA?report=com.atlassian.jira.plugin.system.project:changelog-panel&subset=-1"/>
- <item name="History" href="/history.html"/>
- </menu>
-
- <menu name="MINA Community">
- <item name="Mailing List" href="mail-lists.html"/>
- <item name="Issue Tracker" href="http://issues.apache.org/jira/browse/DIRMINA"/>
- <item name="Wiki Pages" href="http://wiki.apache.org/directory/MinaHome"/>
- </menu>
-
- <menu name="MINA Examples">
- <item name="JavaDocs" href="/apidocs-examples/index.html"/>
- <item name="Source code" href="/xref-examples/index.html"/>
- </menu>
-
- <menu name="MINA References">
- <item name="JavaDocs" href="/apidocs/index.html"/>
- <item name="Source code" href="/xref/index.html"/>
- <item name="Source code (SVN)" href="http://svn.apache.org/viewcvs.cgi/directory/network/trunk/?root=Apache-SVN"/>
- <item name="Wiki" href="http://wiki.apache.org/directory/MinaHome"/>
- </menu>
- </body>
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+
+ <title>MINA</title>
+
+ <body>
+ <links>
+ <item name="Directory" href="http://directory.apache.org/" />
+ <item name="ApacheDS" href="http://directory.apache.org/subprojects/apacheds/"/>
+ <item name="LDAP" href="http://directory.apache.org/subprojects/ldap.html"/>
+ <item name="Naming" href="http://directory.apache.org/subprojects/naming/"/>
+ <item name="ASN.1" href="http://directory.apache.org/subprojects/asn1/"/>
+ <item name="Kerberos" href="http://directory.apache.org/subprojects/"/>
+ <item name="AuthX" href="http://directory.apache.org/subprojects/authx/"/>
+ <item name="MINA" href="http://directory.apache.org/subprojects/network/"/>
+ <item name="Protocols" href="http://directory.apache.org/subprojects/providers.html"/>
+ </links>
+
+ <menu name="Stable Versions">
+ <item name="0.8" href="http://directory.apache.org/subprojects/network/branches/0.8/"/>
+ </menu>
+
+ <menu name="MINA">
+ <item name="Overview" href="/index.html"/>
+ <item name="Features" href="/features.html"/>
+ <item name="Testimonials" href="/testimonials.html"/>
+ <item name="Getting Started" href="/getting_started.html"/>
+ <item name="Downloads" href="http://svn.apache.org/repository/directory-network/"/>
+ <item name="F.A.Q" href="/faq.html"/>
+ <item name="Roadmap" href="/roadmap.html"/>
+ <item name="Changes" href="http://issues.apache.org/jira/browse/DIRMINA?report=com.atlassian.jira.plugin.system.project:changelog-panel&subset=-1"/>
+ <item name="History" href="/history.html"/>
+ </menu>
+
+ <menu name="MINA Community">
+ <item name="Mailing List" href="mail-lists.html"/>
+ <item name="Issue Tracker" href="http://issues.apache.org/jira/browse/DIRMINA"/>
+ <item name="Wiki Pages" href="http://wiki.apache.org/directory/MinaHome"/>
+ </menu>
+
+ <menu name="MINA Examples">
+ <item name="JavaDocs" href="/apidocs-examples/index.html"/>
+ <item name="Source code" href="/xref-examples/index.html"/>
+ </menu>
+
+ <menu name="MINA References">
+ <item name="JavaDocs" href="/apidocs/index.html"/>
+ <item name="Source code" href="/xref/index.html"/>
+ <item name="Source code (SVN)" href="http://svn.apache.org/viewcvs.cgi/directory/network/trunk/?root=Apache-SVN"/>
+ <item name="Wiki" href="http://wiki.apache.org/directory/MinaHome"/>
+ </menu>
+ </body>
+</project>
Modified: directory/network/trunk/xdocs/testimonials.xml
URL: http://svn.apache.org/viewcvs/directory/network/trunk/xdocs/testimonials.xml?rev=359355&r1=359354&r2=359355&view=diff
==============================================================================
--- directory/network/trunk/xdocs/testimonials.xml (original)
+++ directory/network/trunk/xdocs/testimonials.xml Tue Dec 27 18:49:31 2005
@@ -1,99 +1,99 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document>
- <properties>
- <author email="trustin@apache.org">Trustin Lee</author>
- <title>Testimonials</title>
- </properties>
-
- <body>
- <section name="Testimonials">
- <p>
- Alex Burmester says:
- <blockquote>
- <p>
- We are using MINA at a telco to route low level protocol packets
- to a third party. We already had a SOAP and also a CORBA interface
- but for speed purposes we are trying out a lower level protocol and
- we needed a gateway of sorts to route messages between our cluster of
- servers and the third party's servers.
- </p>
- <p>
- I had been planning on using NIO and some aspects of
- <a href="http://www.eecs.harvard.edu/~mdw/proj/seda/">SEDA</a> but
- finding MINA was a real treat as it saved a lot of time, is well
- written and gets more testing than our in house QA would be able to
- cover.
- </p>
- <p>
- The speed and stability of our app on top of MINA has been excellent.
- </p>
- </blockquote>
- </p>
-
- <p>Jean-François Daune says:
- <blockquote>
- <p>
- We use MINA to communicate with
- <a href="http://www.banksys.com/">Banksys</a> 'point of sale'
- terminals (Visa, Mastercard...) for technical management operations.
- (software upgrade, remote monitoring, log transfer...)
- </p>
- <p>
- So far, MINA has worked really well for us. We used
- <a href="http://gleamynode.net/dev/tl-netty2/docs/">Netty2</a>,
- and clearly saw the improvements in MINA. I like the MINA API
- more. MINA really makes it easier to write applications using NIO.
- </p>
- </blockquote>
- </p>
-
- <p>Luke Hubbard says:
- <blockquote>
- We are using it for the network layer of
- <a href="http://www.osflash.org/red5">Red5</a>, an open source flash
- server. At the moment we have RTMP and AMF working and hope to add
- more protocols in the future. MINA's design and ease of use has
- helped us get a prototype up and running quickly.
- </blockquote>
- </p>
-
- <p>Thomas Muller says:
- <blockquote>
- What a fantastic API! Definately the best I've seen since
- <a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html">Doug Lea's Concurrency API</a>.
- </blockquote>
- </p>
-
- <p>Paolo Perrucci says:
- <blockquote>
- We are using MINA to build the network layer of our multiplayer
- game server at <a href="http://ludonet.leonardo.it/">Leonardo.it</a>.
- Using MINA, we implemented different protocols in a few days;
- Game and HTTP tunneling. In the past, we used NIO, and the advantage
- of using MINA is evident; the MINA API is elegant and very simple to
- use. Last, but not least, MINA have a really responsive support.
- </blockquote>
- </p>
-
- <p>Julien Vermillard says:
- <blockquote>
- I'm using MINA for supervisory control and data acquisition (SCADA)
- embedded application. It's used for several tasks; connecting
- supervision clients to the server, interaction of the server with
- different hardware (other SCADA systems, media stream matrix,
- programmable automaton, remote data aquisition systems), custom
- replication protocols for fail-over service. I found MINA when I
- started implementation using NIO and it was a great time saver.
- You can switch from RS232 to TCP/IP and add SSL connectivity easly.
- The stability and the support is really great. The code and the
- design are simple and efficient, so you can easly implement high
- quality protocol logic without bothering with all the NIO quirks.
- I didn't really tested the maximum performance you can get out of
- MINA, but all I can say is that MINA is running 24/7 with an amazing
- stability and I'm not afraid of using it in harsh evironement.
- </blockquote>
- </p>
-
- </section>
- </body>
-</document>
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+ <properties>
+ <author email="trustin@apache.org">Trustin Lee</author>
+ <title>Testimonials</title>
+ </properties>
+
+ <body>
+ <section name="Testimonials">
+ <p>
+ Alex Burmester says:
+ <blockquote>
+ <p>
+ We are using MINA at a telco to route low level protocol packets
+ to a third party. We already had a SOAP and also a CORBA interface
+ but for speed purposes we are trying out a lower level protocol and
+ we needed a gateway of sorts to route messages between our cluster of
+ servers and the third party's servers.
+ </p>
+ <p>
+ I had been planning on using NIO and some aspects of
+ <a href="http://www.eecs.harvard.edu/~mdw/proj/seda/">SEDA</a> but
+ finding MINA was a real treat as it saved a lot of time, is well
+ written and gets more testing than our in house QA would be able to
+ cover.
+ </p>
+ <p>
+ The speed and stability of our app on top of MINA has been excellent.
+ </p>
+ </blockquote>
+ </p>
+
+ <p>Jean-François Daune says:
+ <blockquote>
+ <p>
+ We use MINA to communicate with
+ <a href="http://www.banksys.com/">Banksys</a> 'point of sale'
+ terminals (Visa, Mastercard...) for technical management operations.
+ (software upgrade, remote monitoring, log transfer...)
+ </p>
+ <p>
+ So far, MINA has worked really well for us. We used
+ <a href="http://gleamynode.net/dev/tl-netty2/docs/">Netty2</a>,
+ and clearly saw the improvements in MINA. I like the MINA API
+ more. MINA really makes it easier to write applications using NIO.
+ </p>
+ </blockquote>
+ </p>
+
+ <p>Luke Hubbard says:
+ <blockquote>
+ We are using it for the network layer of
+ <a href="http://www.osflash.org/red5">Red5</a>, an open source flash
+ server. At the moment we have RTMP and AMF working and hope to add
+ more protocols in the future. MINA's design and ease of use has
+ helped us get a prototype up and running quickly.
+ </blockquote>
+ </p>
+
+ <p>Thomas Muller says:
+ <blockquote>
+ What a fantastic API! Definately the best I've seen since
+ <a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html">Doug Lea's Concurrency API</a>.
+ </blockquote>
+ </p>
+
+ <p>Paolo Perrucci says:
+ <blockquote>
+ We are using MINA to build the network layer of our multiplayer
+ game server at <a href="http://ludonet.leonardo.it/">Leonardo.it</a>.
+ Using MINA, we implemented different protocols in a few days;
+ Game and HTTP tunneling. In the past, we used NIO, and the advantage
+ of using MINA is evident; the MINA API is elegant and very simple to
+ use. Last, but not least, MINA have a really responsive support.
+ </blockquote>
+ </p>
+
+ <p>Julien Vermillard says:
+ <blockquote>
+ I'm using MINA for supervisory control and data acquisition (SCADA)
+ embedded application. It's used for several tasks; connecting
+ supervision clients to the server, interaction of the server with
+ different hardware (other SCADA systems, media stream matrix,
+ programmable automaton, remote data aquisition systems), custom
+ replication protocols for fail-over service. I found MINA when I
+ started implementation using NIO and it was a great time saver.
+ You can switch from RS232 to TCP/IP and add SSL connectivity easly.
+ The stability and the support is really great. The code and the
+ design are simple and efficient, so you can easly implement high
+ quality protocol logic without bothering with all the NIO quirks.
+ I didn't really tested the maximum performance you can get out of
+ MINA, but all I can say is that MINA is running 24/7 with an amazing
+ stability and I'm not afraid of using it in harsh evironement.
+ </blockquote>
+ </p>
+
+ </section>
+ </body>
+</document>
|