Author: trustin Date: Wed Jan 12 00:51:34 2005 New Revision: 124954 URL: http://svn.apache.org/viewcvs?view=rev&rev=124954 Log: * Renamed Acceptor to IoAcceptor * Renamed Connector to IoConnector * Added ProtocolAcceptor and ProtocolConnector * Added IoProtocolAcceptor and IoProtocolConnector which wraps IoAcceptor and IoConnector * connect() method of all connectors now returns IoSession(or ProtocolSession) Added: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoAcceptor.java - copied, changed from r124951, incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Acceptor.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoConnector.java - copied, changed from r124951, incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Connector.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolAcceptor.java (contents, props changed) incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolConnector.java (contents, props changed) incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoAdapter.java - copied, changed from r124951, incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java (contents, props changed) incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoProtocolConnector.java (contents, props changed) Removed: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Acceptor.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Connector.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java Modified: incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/echoserver/Main.java incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/reverser/Main.java incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Client.java incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Server.java incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoHandler.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramConnector.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketAcceptor.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketConnector.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolProvider.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolViolationException.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeAcceptor.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeConnector.java incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/IoHandlerFilterManager.java incubator/directory/network/trunk/mina/src/test/org/apache/mina/examples/echoserver/Test.java
Modified: incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/echoserver/Main.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/echoserver/Main.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/echoserver/Main.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/echoserver/Main.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/echoserver/Main.java (original) +++ incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/echoserver/Main.java Wed Jan 12 00:51:34 2005 @@ -20,7 +20,7 @@ import java.net.InetSocketAddress; -import org.apache.mina.io.Acceptor; +import org.apache.mina.io.IoAcceptor; import org.apache.mina.io.datagram.DatagramAcceptor; import org.apache.mina.io.filter.IoThreadPoolFilter; import org.apache.mina.io.socket.SocketAcceptor; @@ -42,7 +42,7 @@ threadPoolFilter.start(); // and start it // Create a TCP/IP acceptor - Acceptor acceptor = new SocketAcceptor(); + IoAcceptor acceptor = new SocketAcceptor(); // Add thread pool filter // MINA runs in a single thread if you don't add this filter. @@ -53,7 +53,7 @@ new EchoProtocolHandler() ); // Create a UDP/IP acceptor - Acceptor datagramAcceptor = new DatagramAcceptor(); + IoAcceptor datagramAcceptor = new DatagramAcceptor(); // Add thread pool filter datagramAcceptor.addFilter( Integer.MAX_VALUE, threadPoolFilter ); Modified: incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/reverser/Main.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/reverser/Main.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/reverser/Main.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/reverser/Main.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/reverser/Main.java (original) +++ incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/reverser/Main.java Wed Jan 12 00:51:34 2005 @@ -20,11 +20,10 @@ import java.net.InetSocketAddress; -import org.apache.mina.io.Acceptor; import org.apache.mina.io.filter.IoThreadPoolFilter; import org.apache.mina.io.socket.SocketAcceptor; -import org.apache.mina.protocol.IoAdapter; import org.apache.mina.protocol.filter.ProtocolThreadPoolFilter; +import org.apache.mina.protocol.io.IoProtocolAcceptor; /** * (<b>Entry point</b>) Reverser server which reverses all text lines from @@ -49,19 +48,18 @@ ioThreadPoolFilter.start(); protocolThreadPoolFilter.start(); - // Create TCP/IP acceptor. - Acceptor acceptor = new SocketAcceptor(); - - // Create an I/O adapter to adapt ProtocolProvider to IoHandler. - IoAdapter ioAdapter = new IoAdapter(); + // Create a TCP/IP acceptor. + IoProtocolAcceptor acceptor = new IoProtocolAcceptor( + new SocketAcceptor() ); // Add both thread pool filters. - acceptor.addFilter( Integer.MAX_VALUE, ioThreadPoolFilter ); - ioAdapter.addFilter( Integer.MAX_VALUE, protocolThreadPoolFilter ); + acceptor.getIoAcceptor().addFilter( Integer.MAX_VALUE, + ioThreadPoolFilter ); + acceptor.addFilter( Integer.MAX_VALUE, protocolThreadPoolFilter ); // Bind - acceptor.bind( new InetSocketAddress( PORT ), ioAdapter - .adapt( new ReverseProtocolProvider() ) ); + acceptor.bind( new InetSocketAddress( PORT ), + new ReverseProtocolProvider() ); System.out.println( "Listening on port " + PORT ); } Modified: incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Client.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Client.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Client.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Client.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Client.java (original) +++ incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Client.java Wed Jan 12 00:51:34 2005 @@ -6,12 +6,12 @@ import java.io.IOException; import java.net.InetSocketAddress; -import org.apache.mina.io.Connector; import org.apache.mina.io.filter.IoThreadPoolFilter; import org.apache.mina.io.socket.SocketConnector; -import org.apache.mina.protocol.IoAdapter; import org.apache.mina.protocol.ProtocolProvider; +import org.apache.mina.protocol.ProtocolSession; import org.apache.mina.protocol.filter.ProtocolThreadPoolFilter; +import org.apache.mina.protocol.io.IoProtocolConnector; /** * (<strong>Entry Point</strong>) Starts SumUp client. @@ -52,20 +52,21 @@ ioThreadPoolFilter.start(); protocolThreadPoolFilter.start(); - Connector connector = new SocketConnector(); - IoAdapter adapter = new IoAdapter(); - - connector.addFilter( Integer.MAX_VALUE, ioThreadPoolFilter ); - adapter.addFilter( Integer.MAX_VALUE, protocolThreadPoolFilter ); + IoProtocolConnector connector = new IoProtocolConnector( + new SocketConnector() ); + connector.getIoConnector().addFilter( Integer.MAX_VALUE, + ioThreadPoolFilter ); + connector.addFilter( Integer.MAX_VALUE, protocolThreadPoolFilter ); ProtocolProvider protocolProvider = new ClientProtocolProvider( values ); + ProtocolSession session; for( ;; ) { try { - connector.connect( new InetSocketAddress( HOSTNAME, PORT ), - CONNECT_TIMEOUT, adapter - .adapt( protocolProvider ) ); + session = connector + .connect( new InetSocketAddress( HOSTNAME, PORT ), + CONNECT_TIMEOUT, protocolProvider ); break; } catch( IOException e ) @@ -77,9 +78,7 @@ } // wait until the summation is done - ClientSessionHandler sessionHandler = ( ClientSessionHandler ) protocolProvider - .getHandler(); - while( sessionHandler.isFinished() ) + while( session.isConnected() ) { Thread.sleep( 100 ); } Modified: incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Server.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Server.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Server.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Server.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Server.java (original) +++ incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/sumup/Server.java Wed Jan 12 00:51:34 2005 @@ -5,11 +5,10 @@ import java.net.InetSocketAddress; -import org.apache.mina.io.Acceptor; import org.apache.mina.io.filter.IoThreadPoolFilter; import org.apache.mina.io.socket.SocketAcceptor; -import org.apache.mina.protocol.IoAdapter; import org.apache.mina.protocol.filter.ProtocolThreadPoolFilter; +import org.apache.mina.protocol.io.IoProtocolAcceptor; /** * (<strong>Entry Point</strong>) Starts SumUp server. @@ -33,14 +32,15 @@ ioThreadPoolFilter.start(); protocolThreadPoolFilter.start(); - Acceptor acceptor = new SocketAcceptor(); - IoAdapter adapter = new IoAdapter(); + IoProtocolAcceptor acceptor = new IoProtocolAcceptor( + new SocketAcceptor() ); - acceptor.addFilter( Integer.MAX_VALUE, ioThreadPoolFilter ); - adapter.addFilter( Integer.MAX_VALUE, protocolThreadPoolFilter ); + acceptor.getIoAcceptor().addFilter( Integer.MAX_VALUE, + ioThreadPoolFilter ); + acceptor.addFilter( Integer.MAX_VALUE, protocolThreadPoolFilter ); - acceptor.bind( new InetSocketAddress( SERVER_PORT ), adapter - .adapt( new ServerProtocolProvider() ) ); + acceptor.bind( new InetSocketAddress( SERVER_PORT ), + new ServerProtocolProvider() ); System.out.println( "Listening on port " + SERVER_PORT ); } } Modified: incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java (original) +++ incubator/directory/network/trunk/mina/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java Wed Jan 12 00:51:34 2005 @@ -3,8 +3,10 @@ */ package org.apache.mina.examples.tennis; +import org.apache.mina.protocol.ProtocolCodecFactory; import org.apache.mina.protocol.ProtocolHandler; import org.apache.mina.protocol.ProtocolHandlerAdapter; +import org.apache.mina.protocol.ProtocolProvider; import org.apache.mina.protocol.ProtocolSession; /** @@ -13,47 +15,62 @@ * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public class TennisPlayer extends ProtocolHandlerAdapter +public class TennisPlayer implements ProtocolProvider { - private static int nextId = 0; - - /** Player ID **/ - private final int id = nextId++; - - public void sessionOpened( ProtocolSession session ) + private static final ProtocolHandler HANDLER = new TennisPlayerHandler(); + + public ProtocolCodecFactory getCodecFactory() { - System.out.println( "Player-" + id + ": READY" ); + throw new UnsupportedOperationException(); } - public void sessionClosed( ProtocolSession session ) + public ProtocolHandler getHandler() { - System.out.println( "Player-" + id + ": QUIT" ); + return HANDLER; } - public void messageReceived( ProtocolSession session, Object message ) + private static class TennisPlayerHandler extends ProtocolHandlerAdapter { - System.out.println( "Player-" + id + ": RCVD " + message ); + private static int nextId = 0; - TennisBall ball = ( TennisBall ) message; + /** Player ID **/ + private final int id = nextId++; - // Stroke: TTL decreases and PING/PONG state changes. - ball = ball.stroke(); + public void sessionOpened( ProtocolSession session ) + { + System.out.println( "Player-" + id + ": READY" ); + } - if( ball.getTTL() > 0 ) + public void sessionClosed( ProtocolSession session ) { - // If the ball is still alive, pass it back to peer. - session.write( ball ); + System.out.println( "Player-" + id + ": QUIT" ); } - else + + public void messageReceived( ProtocolSession session, Object message ) { - // If the ball is dead, this player loses. - System.out.println( "Player-" + id + ": LOSE" ); - session.close(); + System.out.println( "Player-" + id + ": RCVD " + message ); + + TennisBall ball = ( TennisBall ) message; + + // Stroke: TTL decreases and PING/PONG state changes. + ball = ball.stroke(); + + if( ball.getTTL() > 0 ) + { + // If the ball is still alive, pass it back to peer. + session.write( ball ); + } + else + { + // If the ball is dead, this player loses. + System.out.println( "Player-" + id + ": LOSE" ); + session.close(); + } } - } - public void messageSent( ProtocolSession session, Object message ) - { - System.out.println( "Player-" + id + ": SENT " + message ); + public void messageSent( ProtocolSession session, Object message ) + { + System.out.println( "Player-" + id + ": SENT " + message ); + } } } Deleted: /incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Acceptor.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Acceptor.java?view=auto&rev=124953 ============================================================================== Deleted: /incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Connector.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Connector.java?view=auto&rev=124953 ============================================================================== Copied: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoAcceptor.java (from r124951, incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Acceptor.java) Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoAcceptor.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Acceptor.java&r1=124951&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoAcceptor.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Acceptor.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoAcceptor.java Wed Jan 12 00:51:34 2005 @@ -47,16 +47,15 @@ * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public interface Acceptor +public interface IoAcceptor { /** * Binds to the specified <code>address</code> and handles incoming - * connections with the specified <code>defaultHandler</code>. + * connections with the specified <code>handler</code>. * * @throws IOException if failed to bind */ - void bind( SocketAddress address, IoHandler defaultHandler ) - throws IOException; + void bind( SocketAddress address, IoHandler handler ) throws IOException; /** * Unbinds from the specified <code>address</code>. Copied: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoConnector.java (from r124951, incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Connector.java) Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoConnector.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Connector.java&r1=124951&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoConnector.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/Connector.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoConnector.java Wed Jan 12 00:51:34 2005 @@ -47,26 +47,26 @@ * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public interface Connector +public interface IoConnector { /** * Connects to the specified <code>address</code>. If communication starts * successfully, events are fired to the specified - * <code>defaultHandler</code>. This method blocks. + * <code>handler</code>. This method blocks. * * @throws IOException if failed to connect */ - void connect( SocketAddress address, IoHandler defaultHandler ) + IoSession connect( SocketAddress address, IoHandler handler ) throws IOException; /** * Connects to the specified <code>address</code> with timeout. If * communication starts successfully, events are fired to the specified - * <code>defaultHandler</code>. This method blocks. + * <code>handler</code>. This method blocks. * * @throws IOException if failed to connect */ - void connect( SocketAddress address, int timeout, IoHandler defaultHandler ) + IoSession connect( SocketAddress address, int timeout, IoHandler handler ) throws IOException; /** Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoHandler.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoHandler.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoHandler.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoHandler.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoHandler.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoHandler.java Wed Jan 12 00:51:34 2005 @@ -24,7 +24,7 @@ import org.apache.mina.common.IdleStatus; /** - * Handles all I/O events fired by [EMAIL PROTECTED] Acceptor} and [EMAIL PROTECTED] Connector}. + * Handles all I/O events fired by [EMAIL PROTECTED] IoAcceptor} and [EMAIL PROTECTED] IoConnector}. * There are 6 event handler methods, and they are all invoked by MINA * automatically. Most users of MINA I/O package will be OK with this single * interface to implement their protocols. Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java Wed Jan 12 00:51:34 2005 @@ -31,7 +31,7 @@ import java.util.Set; import org.apache.mina.common.ByteBuffer; -import org.apache.mina.io.Acceptor; +import org.apache.mina.io.IoAcceptor; import org.apache.mina.io.DefaultExceptionMonitor; import org.apache.mina.io.ExceptionMonitor; import org.apache.mina.io.IoHandler; @@ -40,12 +40,12 @@ import org.apache.mina.util.Queue; /** - * [EMAIL PROTECTED] Acceptor} for datagram transport (UDP/IP). + * [EMAIL PROTECTED] IoAcceptor} for datagram transport (UDP/IP). * * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public class DatagramAcceptor extends DatagramProcessor implements Acceptor +public class DatagramAcceptor extends DatagramProcessor implements IoAcceptor { private static volatile int nextId = 0; @@ -77,13 +77,13 @@ selector = Selector.open(); } - public void bind( SocketAddress address, IoHandler defaultHandler ) + public void bind( SocketAddress address, IoHandler handler ) throws IOException { if( address == null ) throw new NullPointerException( "address" ); - if( defaultHandler == null ) - throw new NullPointerException( "defaultHandler" ); + if( handler == null ) + throw new NullPointerException( "handler" ); if( ! ( address instanceof InetSocketAddress ) ) throw new IllegalArgumentException( "Unexpected address type: " @@ -97,8 +97,7 @@ { synchronized( registerQueue ) { - registerQueue.push( new RegistrationRequest( ch, - defaultHandler ) ); + registerQueue.push( new RegistrationRequest( ch, handler ) ); } channels.put( address, ch ); Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramConnector.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramConnector.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramConnector.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramConnector.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramConnector.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/datagram/DatagramConnector.java Wed Jan 12 00:51:34 2005 @@ -29,21 +29,23 @@ import java.util.Set; import org.apache.mina.common.ByteBuffer; -import org.apache.mina.io.Connector; import org.apache.mina.io.DefaultExceptionMonitor; import org.apache.mina.io.ExceptionMonitor; +import org.apache.mina.io.IoConnector; import org.apache.mina.io.IoHandler; import org.apache.mina.io.IoHandlerFilter; +import org.apache.mina.io.IoSession; import org.apache.mina.util.IoHandlerFilterManager; import org.apache.mina.util.Queue; /** - * [EMAIL PROTECTED] Connector} for datagram transport (UDP/IP). + * [EMAIL PROTECTED] IoConnector} for datagram transport (UDP/IP). * * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public class DatagramConnector extends DatagramProcessor implements Connector +public class DatagramConnector extends DatagramProcessor implements + IoConnector { private static volatile int nextId = 0; @@ -73,13 +75,13 @@ selector = Selector.open(); } - public void connect( SocketAddress address, IoHandler defaultHandler ) + public IoSession connect( SocketAddress address, IoHandler handler ) throws IOException { if( address == null ) throw new NullPointerException( "address" ); - if( defaultHandler == null ) - throw new NullPointerException( "defaultHandler" ); + if( handler == null ) + throw new NullPointerException( "handler" ); if( ! ( address instanceof InetSocketAddress ) ) throw new IllegalArgumentException( "Unexpected address type: " @@ -89,8 +91,7 @@ ch.configureBlocking( false ); ch.socket().connect( address ); - RegistrationRequest request = new RegistrationRequest( ch, - defaultHandler ); + RegistrationRequest request = new RegistrationRequest( ch, handler ); synchronized( this ) { synchronized( registerQueue ) @@ -120,12 +121,14 @@ } } } + + return request.session; } - public void connect( SocketAddress address, int timeout, - IoHandler defaultHandler ) throws IOException + public IoSession connect( SocketAddress address, int timeout, + IoHandler handler ) throws IOException { - connect( address, defaultHandler ); + return connect( address, handler ); } public void closeSession( DatagramSession session ) Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketAcceptor.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketAcceptor.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketAcceptor.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketAcceptor.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketAcceptor.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketAcceptor.java Wed Jan 12 00:51:34 2005 @@ -30,7 +30,7 @@ import java.util.Iterator; import java.util.Map; -import org.apache.mina.io.Acceptor; +import org.apache.mina.io.IoAcceptor; import org.apache.mina.io.DefaultExceptionMonitor; import org.apache.mina.io.ExceptionMonitor; import org.apache.mina.io.IoHandler; @@ -39,12 +39,12 @@ import org.apache.mina.util.Queue; /** - * [EMAIL PROTECTED] Acceptor} for socket transport (TCP/IP). + * [EMAIL PROTECTED] IoAcceptor} for socket transport (TCP/IP). * * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public class SocketAcceptor implements Acceptor +public class SocketAcceptor implements IoAcceptor { private static volatile int nextId = 0; @@ -74,26 +74,26 @@ selector = Selector.open(); } - public void bind( SocketAddress address, IoHandler defaultHandler ) + public void bind( SocketAddress address, IoHandler handler ) throws IOException { - this.bind( address, 50, defaultHandler ); + this.bind( address, 50, handler ); } /** * Binds to the specified <code>address</code> and handles incoming - * connections with the specified <code>defaultHandler</code>. + * connections with the specified <code>handler</code>. * * @param backlog the listen backlog length * @throws IOException if failed to bind */ - public void bind( SocketAddress address, int backlog, - IoHandler defaultHandler ) throws IOException + public void bind( SocketAddress address, int backlog, IoHandler handler ) + throws IOException { if( address == null ) throw new NullPointerException( "address" ); - if( defaultHandler == null ) - throw new NullPointerException( "defaultHandler" ); + if( handler == null ) + throw new NullPointerException( "handler" ); if( ! ( address instanceof InetSocketAddress ) ) throw new IllegalArgumentException( "Unexpected address type: " @@ -107,8 +107,7 @@ { synchronized( registerQueue ) { - registerQueue.push( new RegistrationRequest( ssc, - defaultHandler ) ); + registerQueue.push( new RegistrationRequest( ssc, handler ) ); } channels.put( address, ssc ); Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketConnector.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketConnector.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketConnector.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketConnector.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketConnector.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketConnector.java Wed Jan 12 00:51:34 2005 @@ -28,20 +28,21 @@ import java.util.Iterator; import java.util.Set; -import org.apache.mina.io.Connector; import org.apache.mina.io.DefaultExceptionMonitor; import org.apache.mina.io.ExceptionMonitor; +import org.apache.mina.io.IoConnector; import org.apache.mina.io.IoHandler; import org.apache.mina.io.IoHandlerFilter; +import org.apache.mina.io.IoSession; import org.apache.mina.util.IoHandlerFilterManager; /** - * [EMAIL PROTECTED] Connector} for socket transport (TCP/IP). + * [EMAIL PROTECTED] IoConnector} for socket transport (TCP/IP). * * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public class SocketConnector implements Connector +public class SocketConnector implements IoConnector { private static volatile int nextId = 0; @@ -65,19 +66,19 @@ selector = Selector.open(); } - public void connect( SocketAddress address, IoHandler defaultHandler ) + public IoSession connect( SocketAddress address, IoHandler handler ) throws IOException { - connect( address, Integer.MAX_VALUE, defaultHandler ); + return connect( address, Integer.MAX_VALUE, handler ); } - public void connect( SocketAddress address, int timeout, - IoHandler defaultHandler ) throws IOException + public IoSession connect( SocketAddress address, int timeout, + IoHandler handler ) throws IOException { if( address == null ) throw new NullPointerException( "address" ); - if( defaultHandler == null ) - throw new NullPointerException( "defaultHandler" ); + if( handler == null ) + throw new NullPointerException( "handler" ); if( timeout <= 0 ) throw new IllegalArgumentException( "Illegal timeout: " + timeout ); @@ -89,13 +90,14 @@ SocketChannel ch = SocketChannel.open(); ch.configureBlocking( false ); + IoSession session; if( ch.connect( address ) ) { - newSession( ch, defaultHandler ); + session = newSession( ch, handler ); } else { - ConnectEntry entry = new ConnectEntry( timeout, defaultHandler ); + ConnectEntry entry = new ConnectEntry( timeout, handler ); synchronized( this ) { @@ -124,7 +126,11 @@ if( entry.exception != null ) throw entry.exception; + + session = entry.session; } + + return session; } private void processSessions( Set keys ) @@ -144,9 +150,8 @@ try { ch.finishConnect(); - newSession( ch, entry.handler ); - // SocketSession session = newSession( ch, entry.handler ); - // entry.session = session; + SocketSession session = newSession( ch, entry.handler ); + entry.session = session; entry.done = true; synchronized( entry ) @@ -263,7 +268,7 @@ private final IoHandler handler; - // private SocketSession session; + private SocketSession session; private boolean done; Deleted: /incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java?view=auto&rev=124953 ============================================================================== Added: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolAcceptor.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolAcceptor.java?view=auto&rev=124954 ============================================================================== --- (empty file) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolAcceptor.java Wed Jan 12 00:51:34 2005 @@ -0,0 +1,73 @@ +/* + * @(#) $Id$ + * + * 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.protocol; + +import java.io.IOException; +import java.net.SocketAddress; + +/** + * Accepts incoming connection, communicates with clients, and fires events to + * [EMAIL PROTECTED] ProtocolHandler}s. + * <p> + * Please refer to + * <a href="../../../../../xref-examples/org/apache/mina/examples/reverser/Main.html">Reverser</a> + * example. + * <p> + * You should bind to the desired socket address to accept incoming + * connections, and then events for incoming connections will be sent to + * the specified default [EMAIL PROTECTED] ProtocolHandler}. + * <p> + * Threads accepts incoming connections start automatically when + * [EMAIL PROTECTED] #bind(SocketAddress, ProtocolProvider)} is invoked, and stop when all + * addresses are unbound. + * <p> + * [EMAIL PROTECTED] ProtocolHandlerFilter}s can be added and removed at any time to filter + * events just like Servlet filters and they are effective immediately. + * + * @author Trustin Lee ([EMAIL PROTECTED]) + * @version $Rev$, $Date$ + */ +public interface ProtocolAcceptor +{ + /** + * Binds to the specified <code>address</code> and handles incoming + * connections with the specified <code>protocolProvider</code>. + * + * @throws IOException if failed to bind + */ + void bind( SocketAddress address, ProtocolProvider protocolProvider ) + throws IOException; + + /** + * Unbinds from the specified <code>address</code>. + */ + void unbind( SocketAddress address ); + + /** + * Adds the specified filter with the specified priority. Greater priority + * value, higher priority, and thus evaluated more earlier. Please note + * that priority value must be unique. + */ + void addFilter( int priority, ProtocolHandlerFilter filter ); + + /** + * Removes the specified filter from the filter list. + */ + void removeFilter( ProtocolHandlerFilter filter ); +} \ No newline at end of file Added: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolConnector.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolConnector.java?view=auto&rev=124954 ============================================================================== --- (empty file) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolConnector.java Wed Jan 12 00:51:34 2005 @@ -0,0 +1,81 @@ +/* + * @(#) $Id$ + * + * 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.protocol; + +import java.io.IOException; +import java.net.SocketAddress; + +/** + * Connects to endpoint, communicates with the server, and fires events to + * [EMAIL PROTECTED] ProtocolProvider}s. + * <p> + * Please refer to + * <a href="../../../../../xref-examples/org/apache/mina/examples/sumup/Client.html">SumUp client</a> + * example. + * <p> + * You should connect to the desired socket address to start communication, + * and then events for incoming connections will be sent to the + * [EMAIL PROTECTED] ProtocolHandler} of the specified [EMAIL PROTECTED] ProtocolProvider}. + * <p> + * Threads connects to endpoint start automatically when + * [EMAIL PROTECTED] #connect(SocketAddress, ProtocolProvider)} is invoked, and stop when + * all connection attempts are finished. + * <p> + * [EMAIL PROTECTED] ProtocolHandlerFilter}s can be added and removed at any time to filter + * events just like Servlet filters and they are effective immediately. + * + * @author Trustin Lee ([EMAIL PROTECTED]) + * @version $Rev$, $Date$ + */ +public interface ProtocolConnector +{ + /** + * Connects to the specified <code>address</code>. If communication starts + * successfully, events are fired to the specified + * <code>protocolProvider</code>. This method blocks. + * + * @throws IOException if failed to connect + */ + ProtocolSession connect( SocketAddress address, + ProtocolProvider protocolProvider ) + throws IOException; + + /** + * Connects to the specified <code>address</code> with timeout. If + * communication starts successfully, events are fired to the specified + * <code>protocolProvider</code>. This method blocks. + * + * @throws IOException if failed to connect + */ + ProtocolSession connect( SocketAddress address, int timeout, + ProtocolProvider protocolProvider ) + throws IOException; + + /** + * Adds the specified filter with the specified priority. Greater priority + * value, higher priority, and thus evaluated more earlier. Please note + * that priority value must be unique. + */ + void addFilter( int priority, ProtocolHandlerFilter filter ); + + /** + * Removes the specified filter from the filter list. + */ + void removeFilter( ProtocolHandlerFilter filter ); +} \ No newline at end of file Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolProvider.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolProvider.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolProvider.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolProvider.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolProvider.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolProvider.java Wed Jan 12 00:51:34 2005 @@ -18,7 +18,7 @@ */ package org.apache.mina.protocol; -import org.apache.mina.io.IoHandler; +import java.net.SocketAddress; /** * Provides a required information to implement high-level protocols. @@ -31,8 +31,8 @@ * </ul> * <p> * If once you implement [EMAIL PROTECTED] ProtocolProvider} for your protocol, you can - * adapt it into [EMAIL PROTECTED] IoHandler} using [EMAIL PROTECTED] IoAdapter} to work with I/O - * layer which does actual I/O operations. + * connect to or bind on [EMAIL PROTECTED] SocketAddress} using [EMAIL PROTECTED] ProtocolAcceptor} + * and [EMAIL PROTECTED] ProtocolConnector}. * <p> * Please refer to * <a href="../../../../../xref-examples/org/apache/mina/examples/reverser/ReverseProtocolProvider.html"><code>ReverserProtocolProvider</code></a> Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolViolationException.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolViolationException.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolViolationException.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolViolationException.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolViolationException.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/ProtocolViolationException.java Wed Jan 12 00:51:34 2005 @@ -99,7 +99,7 @@ /** * Sets unknown message part. */ - void setBuffer( ByteBuffer buffer ) + public void setBuffer( ByteBuffer buffer ) { this.buffer = buffer; } Copied: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoAdapter.java (from r124951, incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java) Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoAdapter.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java&r1=124951&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoAdapter.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoAdapter.java Wed Jan 12 00:51:34 2005 @@ -16,7 +16,7 @@ * limitations under the License. * */ -package org.apache.mina.protocol; +package org.apache.mina.protocol.io; import java.net.SocketAddress; @@ -24,11 +24,21 @@ import org.apache.mina.common.IdleStatus; import org.apache.mina.common.SessionConfig; import org.apache.mina.common.TransportType; -import org.apache.mina.io.Acceptor; -import org.apache.mina.io.Connector; +import org.apache.mina.io.IoAcceptor; +import org.apache.mina.io.IoConnector; import org.apache.mina.io.IoHandler; import org.apache.mina.io.IoHandlerFilter; import org.apache.mina.io.IoSession; +import org.apache.mina.protocol.ProtocolCodecFactory; +import org.apache.mina.protocol.ProtocolDecoder; +import org.apache.mina.protocol.ProtocolDecoderOutput; +import org.apache.mina.protocol.ProtocolEncoder; +import org.apache.mina.protocol.ProtocolEncoderOutput; +import org.apache.mina.protocol.ProtocolHandler; +import org.apache.mina.protocol.ProtocolHandlerFilter; +import org.apache.mina.protocol.ProtocolProvider; +import org.apache.mina.protocol.ProtocolSession; +import org.apache.mina.protocol.ProtocolViolationException; import org.apache.mina.util.ProtocolHandlerFilterManager; import org.apache.mina.util.Queue; import org.apache.mina.util.ProtocolHandlerFilterManager.WriteCommand; @@ -51,8 +61,8 @@ * <a href="../../../../../xref-examples/org/apache/mina/examples/reverser/Main.html">Reverser</a> * example. * <p> - * [EMAIL PROTECTED] IoAdapter} supports protocol-level filters like [EMAIL PROTECTED] Acceptor}s and - * [EMAIL PROTECTED] Connector}s. It is the same with [EMAIL PROTECTED] IoHandlerFilter} and Servlet + * [EMAIL PROTECTED] IoAdapter} supports protocol-level filters like [EMAIL PROTECTED] IoAcceptor}s and + * [EMAIL PROTECTED] IoConnector}s. It is the same with [EMAIL PROTECTED] IoHandlerFilter} and Servlet * filters and effective immediately. * * @author Trustin Lee ([EMAIL PROTECTED]) @@ -64,7 +74,7 @@ private final ProtocolHandlerFilterManager filterManager = new ProtocolHandlerFilterManager(); - public IoAdapter() + IoAdapter() { } @@ -95,6 +105,23 @@ public IoHandler adapt( ProtocolProvider protocolProvider ) { return new SessionHandlerAdapter( protocolProvider ); + } + + /** + * Returns [EMAIL PROTECTED] ProtocolSession} of the specified [EMAIL PROTECTED] IoSession}. + */ + public ProtocolSession toProtocolSession( IoSession session ) + { + IoHandler handler = session.getHandler(); + if( handler instanceof SessionHandlerAdapter ) + { + SessionHandlerAdapter sha = ( SessionHandlerAdapter ) handler; + return sha.getProtocolSession( session ); + } + else + { + throw new IllegalArgumentException( "Not adapted from IoAdapter." ); + } } private class SessionHandlerAdapter implements IoHandler Added: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java?view=auto&rev=124954 ============================================================================== --- (empty file) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoProtocolAcceptor.java Wed Jan 12 00:51:34 2005 @@ -0,0 +1,67 @@ +/* + * @(#) $Id$ + */ +package org.apache.mina.protocol.io; + +import java.io.IOException; +import java.net.SocketAddress; + +import org.apache.mina.io.IoAcceptor; +import org.apache.mina.protocol.ProtocolAcceptor; +import org.apache.mina.protocol.ProtocolHandlerFilter; +import org.apache.mina.protocol.ProtocolProvider; + +/** + * A [EMAIL PROTECTED] ProtocolAcceptor} which wraps [EMAIL PROTECTED] IoAcceptor} to provide + * low-level I/O. + * + * @author Trustin Lee ([EMAIL PROTECTED]) + * @version $Rev$, $Date$ + */ +public class IoProtocolAcceptor implements ProtocolAcceptor +{ + private final IoAcceptor acceptor; + + private final IoAdapter adapter = new IoAdapter(); + + /** + * Creates a new instance with the specified [EMAIL PROTECTED] IoAcceptor}. + */ + public IoProtocolAcceptor( IoAcceptor acceptor ) + { + if( acceptor == null ) + throw new NullPointerException( "acceptor" ); + + this.acceptor = acceptor; + } + + /** + * Returns a underlying [EMAIL PROTECTED] IoAcceptor} instance this acceptor is + * wrapping. + */ + public IoAcceptor getIoAcceptor() + { + return acceptor; + } + + public void bind( SocketAddress address, ProtocolProvider provider ) + throws IOException + { + acceptor.bind( address, adapter.adapt( provider ) ); + } + + public void unbind( SocketAddress address ) + { + acceptor.unbind( address ); + } + + public void addFilter( int priority, ProtocolHandlerFilter filter ) + { + adapter.addFilter( priority, filter ); + } + + public void removeFilter( ProtocolHandlerFilter filter ) + { + adapter.removeFilter( filter ); + } +} \ No newline at end of file Added: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoProtocolConnector.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoProtocolConnector.java?view=auto&rev=124954 ============================================================================== --- (empty file) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/io/IoProtocolConnector.java Wed Jan 12 00:51:34 2005 @@ -0,0 +1,76 @@ +/* + * @(#) $Id$ + */ +package org.apache.mina.protocol.io; + +import java.io.IOException; +import java.net.SocketAddress; + +import org.apache.mina.io.IoConnector; +import org.apache.mina.io.IoSession; +import org.apache.mina.protocol.ProtocolConnector; +import org.apache.mina.protocol.ProtocolHandlerFilter; +import org.apache.mina.protocol.ProtocolProvider; +import org.apache.mina.protocol.ProtocolSession; + +/** + * A [EMAIL PROTECTED] ProtocolConnector} which wraps [EMAIL PROTECTED] IoConnector} to provide + * low-level I/O. + * + * @author Trustin Lee ([EMAIL PROTECTED]) + * @version $Rev$, $Date$ + */ +public class IoProtocolConnector implements ProtocolConnector +{ + private final IoConnector connector; + + private final IoAdapter adapter = new IoAdapter(); + + /** + * Creates a new instance with the specified [EMAIL PROTECTED] IoConnector}. + */ + public IoProtocolConnector( IoConnector connector ) + { + if( connector == null ) + throw new NullPointerException( "connector" ); + this.connector = connector; + } + + /** + * Returns a underlying [EMAIL PROTECTED] IoConnector} instance this acceptor is + * wrapping. + */ + public IoConnector getIoConnector() + { + return connector; + } + + public ProtocolSession connect( SocketAddress address, + ProtocolProvider provider ) + throws IOException + { + IoSession session = connector.connect( address, adapter + .adapt( provider ) ); + return adapter.toProtocolSession( session ); + } + + public ProtocolSession connect( SocketAddress address, int timeout, + ProtocolProvider provider ) + throws IOException + { + IoSession session = connector.connect( address, timeout, adapter + .adapt( provider ) ); + return adapter.toProtocolSession( session ); + } + + public void addFilter( int priority, ProtocolHandlerFilter filter ) + { + adapter.addFilter( priority, filter ); + } + + public void removeFilter( ProtocolHandlerFilter filter ) + { + adapter.removeFilter( filter ); + } + +} \ No newline at end of file Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeAcceptor.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeAcceptor.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeAcceptor.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeAcceptor.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeAcceptor.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeAcceptor.java Wed Jan 12 00:51:34 2005 @@ -4,21 +4,24 @@ package org.apache.mina.protocol.vmpipe; import java.io.IOException; +import java.net.SocketAddress; import java.util.HashMap; import java.util.Map; +import org.apache.mina.protocol.ProtocolAcceptor; import org.apache.mina.protocol.ProtocolHandler; import org.apache.mina.protocol.ProtocolHandlerFilter; +import org.apache.mina.protocol.ProtocolProvider; import org.apache.mina.util.ProtocolHandlerFilterManager; /** - * Binds the specified [EMAIL PROTECTED] ProtocolHandler} to the specified + * Binds the specified [EMAIL PROTECTED] ProtocolProvider} to the specified * [EMAIL PROTECTED] VmPipeAddress}. * * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public class VmPipeAcceptor +public class VmPipeAcceptor implements ProtocolAcceptor { static final Map boundHandlers = new HashMap(); @@ -29,22 +32,19 @@ */ public VmPipeAcceptor() { - filterManager.addFilter( Integer.MIN_VALUE, new VmPipeFilter() ); + filterManager.addFilter( Integer.MIN_VALUE - 1, new VmPipeFilter() ); } - /** - * Binds to the specified <code>address</code> and handles incoming - * connections with the specified <code>defaultHandler</code>. - * - * @throws IOException if failed to bind - */ - public void bind( VmPipeAddress address, ProtocolHandler defaultHandler ) + public void bind( SocketAddress address, ProtocolProvider protocolProvider ) throws IOException { if( address == null ) throw new NullPointerException( "address" ); - if( defaultHandler == null ) - throw new NullPointerException( "defaultHandler" ); + if( protocolProvider == null ) + throw new NullPointerException( "protocolProvider" ); + if( ! ( address instanceof VmPipeAddress ) ) + throw new IllegalArgumentException( + "address must be VmPipeAddress." ); synchronized( boundHandlers ) { @@ -53,15 +53,14 @@ throw new IOException( "Address already bound: " + address ); } - boundHandlers.put( address, new Entry( address, filterManager, - defaultHandler ) ); + boundHandlers.put( address, new Entry( ( VmPipeAddress ) address, + filterManager, + protocolProvider + .getHandler() ) ); } } - /** - * Unbinds from the specified <code>address</code>. - */ - public void unbind( VmPipeAddress address ) + public void unbind( SocketAddress address ) { if( address == null ) throw new NullPointerException( "address" ); @@ -72,18 +71,11 @@ } } - /** - * Adds the specified filter with the specified priority. Greater priority - * value, higher priority, and thus evaluated more earlier. - */ public void addFilter( int priority, ProtocolHandlerFilter filter ) { filterManager.addFilter( priority, filter ); } - /** - * Removes the specified filter from the filter list. - */ public void removeFilter( ProtocolHandlerFilter filter ) { filterManager.removeFilter( filter ); Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeConnector.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeConnector.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeConnector.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeConnector.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeConnector.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/vmpipe/VmPipeConnector.java Wed Jan 12 00:51:34 2005 @@ -4,21 +4,23 @@ package org.apache.mina.protocol.vmpipe; import java.io.IOException; +import java.net.SocketAddress; -import org.apache.mina.protocol.ProtocolHandler; +import org.apache.mina.protocol.ProtocolConnector; import org.apache.mina.protocol.ProtocolHandlerFilter; +import org.apache.mina.protocol.ProtocolProvider; import org.apache.mina.protocol.ProtocolSession; import org.apache.mina.protocol.vmpipe.VmPipeAcceptor.Entry; import org.apache.mina.util.ProtocolHandlerFilterManager; /** - * Connects to [EMAIL PROTECTED] ProtocolHandler}s which is bound on the specified + * Connects to [EMAIL PROTECTED] ProtocolProvider}s which is bound on the specified * [EMAIL PROTECTED] VmPipeAddress}. * * @author Trustin Lee ([EMAIL PROTECTED]) * @version $Rev$, $Date$ */ -public class VmPipeConnector +public class VmPipeConnector implements ProtocolConnector { private final ProtocolHandlerFilterManager filterManager = new ProtocolHandlerFilterManager(); @@ -27,40 +29,30 @@ */ public VmPipeConnector() { - filterManager.addFilter( Integer.MIN_VALUE, new VmPipeFilter() ); + filterManager.addFilter( Integer.MIN_VALUE - 1, new VmPipeFilter() ); } - /** - * Adds the specified filter with the specified priority. Greater priority - * value, higher priority, and thus evaluated more earlier. Please note - * that priority value must be unique. - */ public void addFilter( int priority, ProtocolHandlerFilter filter ) { filterManager.addFilter( priority, filter ); } - /** - * Removes the specified filter from the filter list. - */ public void removeFilter( ProtocolHandlerFilter filter ) { filterManager.removeFilter( filter ); } - /** - * Connects to the specified <code>address</code>. If communication starts - * successfully, events are fired to the specified - * <code>defaultHandler</code>. This method blocks. - */ - public ProtocolSession connect( VmPipeAddress address, - ProtocolHandler defaultHandler ) + public ProtocolSession connect( SocketAddress address, + ProtocolProvider protocolProvider ) throws IOException { if( address == null ) throw new NullPointerException( "address" ); - if( defaultHandler == null ) - throw new NullPointerException( "defaultHandler" ); + if( protocolProvider == null ) + throw new NullPointerException( "protocolProvider" ); + if( ! ( address instanceof VmPipeAddress ) ) + throw new IllegalArgumentException( + "address must be VmPipeAddress." ); Entry entry = ( Entry ) VmPipeAcceptor.boundHandlers.get( address ); if( entry == null ) @@ -71,10 +63,18 @@ AnonymousVmPipeAddress.INSTANCE, entry.address, filterManager, - defaultHandler, + protocolProvider + .getHandler(), entry.filterManager, entry.handler ); VmPipeIdleStatusChecker.INSTANCE.addSession( session ); return session; + } + + public ProtocolSession connect( SocketAddress address, int timeout, + ProtocolProvider protocolProvider ) + throws IOException + { + return connect( address, protocolProvider ); } } Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/IoHandlerFilterManager.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/IoHandlerFilterManager.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/IoHandlerFilterManager.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/IoHandlerFilterManager.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/IoHandlerFilterManager.java (original) +++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/IoHandlerFilterManager.java Wed Jan 12 00:51:34 2005 @@ -26,7 +26,7 @@ import org.apache.mina.io.IoHandler; import org.apache.mina.io.IoHandlerFilter; import org.apache.mina.io.IoSession; -import org.apache.mina.protocol.IoAdapter; +import org.apache.mina.protocol.io.IoAdapter; /** * Manages the list of [EMAIL PROTECTED] IoHandlerFilter}s. Modified: incubator/directory/network/trunk/mina/src/test/org/apache/mina/examples/echoserver/Test.java Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/test/org/apache/mina/examples/echoserver/Test.java?view=diff&rev=124954&p1=incubator/directory/network/trunk/mina/src/test/org/apache/mina/examples/echoserver/Test.java&r1=124953&p2=incubator/directory/network/trunk/mina/src/test/org/apache/mina/examples/echoserver/Test.java&r2=124954 ============================================================================== --- incubator/directory/network/trunk/mina/src/test/org/apache/mina/examples/echoserver/Test.java (original) +++ incubator/directory/network/trunk/mina/src/test/org/apache/mina/examples/echoserver/Test.java Wed Jan 12 00:51:34 2005 @@ -11,7 +11,7 @@ import org.apache.commons.net.EchoTCPClient; import org.apache.commons.net.EchoUDPClient; -import org.apache.mina.io.Acceptor; +import org.apache.mina.io.IoAcceptor; import org.apache.mina.io.datagram.DatagramAcceptor; import org.apache.mina.io.filter.IoThreadPoolFilter; import org.apache.mina.io.socket.SocketAcceptor; @@ -26,9 +26,9 @@ { private static final int PORT = 8080; - private Acceptor acceptor; + private IoAcceptor acceptor; - private Acceptor datagramAcceptor; + private IoAcceptor datagramAcceptor; private IoThreadPoolFilter threadPoolFilter;
