You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/11/04 09:47:41 UTC

svn commit: r330760 - in /directory/protocol-providers/dhcp/trunk: ./ src/java/org/apache/dhcp/ src/java/org/apache/dhcp/messages/ src/java/org/apache/dhcp/protocol/

Author: trustin
Date: Fri Nov  4 00:47:32 2005
New Revision: 330760

URL: http://svn.apache.org/viewcvs?rev=330760&view=rev
Log:
Related issue: DIR-114 Migrate all protocol providers to MINA 0.9.
* Migrated protocol-provider for DHCP to MINA 0.9.

Added:
    directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolCodecFactory.java
      - copied, changed from r330736, directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolProvider.java
Removed:
    directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolProvider.java
Modified:
    directory/protocol-providers/dhcp/trunk/project.xml
    directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/DhcpException.java
    directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/messages/DhcpMessageModifier.java
    directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpDecoder.java
    directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpEncoder.java
    directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolHandler.java

Modified: directory/protocol-providers/dhcp/trunk/project.xml
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/dhcp/trunk/project.xml?rev=330760&r1=330759&r2=330760&view=diff
==============================================================================
--- directory/protocol-providers/dhcp/trunk/project.xml (original)
+++ directory/protocol-providers/dhcp/trunk/project.xml Fri Nov  4 00:47:32 2005
@@ -85,7 +85,7 @@
     <dependency>
       <groupId>directory-network</groupId>
       <artifactId>mina</artifactId>
-      <version>0.8.0</version>
+      <version>0.9.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>

Modified: directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/DhcpException.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/DhcpException.java?rev=330760&r1=330759&r2=330760&view=diff
==============================================================================
--- directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/DhcpException.java (original)
+++ directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/DhcpException.java Fri Nov  4 00:47:32 2005
@@ -20,6 +20,8 @@
 
 public class DhcpException extends Exception
 {
+    private static final long serialVersionUID = 3985748516732135317L;
+
     /**
      * This empty constructor is used if no 
      * explanation of the DHCP exception is required.

Modified: directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/messages/DhcpMessageModifier.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/messages/DhcpMessageModifier.java?rev=330760&r1=330759&r2=330760&view=diff
==============================================================================
--- directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/messages/DhcpMessageModifier.java (original)
+++ directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/messages/DhcpMessageModifier.java Fri Nov  4 00:47:32 2005
@@ -85,7 +85,7 @@
 	/**
 	 * Set hops field.
 	 * 
-	 * @param inHops hops field
+	 * @param hardwareOptions hops field
 	 */
 	public void setHardwareOptions( byte hardwareOptions )
 	{

Modified: directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpDecoder.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpDecoder.java?rev=330760&r1=330759&r2=330760&view=diff
==============================================================================
--- directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpDecoder.java (original)
+++ directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpDecoder.java Fri Nov  4 00:47:32 2005
@@ -20,26 +20,20 @@
 import org.apache.dhcp.DhcpException;
 import org.apache.dhcp.io.DhcpMessageDecoder;
 import org.apache.mina.common.ByteBuffer;
-import org.apache.mina.protocol.ProtocolDecoder;
-import org.apache.mina.protocol.ProtocolDecoderOutput;
-import org.apache.mina.protocol.ProtocolSession;
-import org.apache.mina.protocol.ProtocolViolationException;
-
+import org.apache.mina.common.IoSession;
+import org.apache.mina.filter.codec.ProtocolDecoder;
+import org.apache.mina.filter.codec.ProtocolDecoderOutput;
 
 public class DhcpDecoder implements ProtocolDecoder
 {
-    public void decode( ProtocolSession session, ByteBuffer in, ProtocolDecoderOutput out )
-            throws ProtocolViolationException
+    public void decode( IoSession session, ByteBuffer in,
+            ProtocolDecoderOutput out ) throws DhcpException
     {
-    	 DhcpMessageDecoder decoder = new DhcpMessageDecoder();
-    	 try
-		 {
-    	 	out.write( decoder.decode( in.buf() ) );
-		 }
-    	 catch ( DhcpException de)
-		 {
-    	 	de.printStackTrace();
-		 }
+        DhcpMessageDecoder decoder = new DhcpMessageDecoder();
+        out.write( decoder.decode( in.buf() ) );
     }
-}
 
+    public void dispose( IoSession arg0 ) throws Exception
+    {
+    }
+}

Modified: directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpEncoder.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpEncoder.java?rev=330760&r1=330759&r2=330760&view=diff
==============================================================================
--- directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpEncoder.java (original)
+++ directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpEncoder.java Fri Nov  4 00:47:32 2005
@@ -20,16 +20,14 @@
 import org.apache.dhcp.io.DhcpMessageEncoder;
 import org.apache.dhcp.messages.DhcpMessage;
 import org.apache.mina.common.ByteBuffer;
-import org.apache.mina.protocol.ProtocolEncoder;
-import org.apache.mina.protocol.ProtocolEncoderOutput;
-import org.apache.mina.protocol.ProtocolSession;
-import org.apache.mina.protocol.ProtocolViolationException;
+import org.apache.mina.common.IoSession;
+import org.apache.mina.filter.codec.ProtocolEncoder;
+import org.apache.mina.filter.codec.ProtocolEncoderOutput;
 
 
 public class DhcpEncoder implements ProtocolEncoder
 {
-    public void encode( ProtocolSession session, Object message, ProtocolEncoderOutput out )
-            throws ProtocolViolationException
+    public void encode( IoSession session, Object message, ProtocolEncoderOutput out )
     {
         DhcpMessageEncoder encoder = new DhcpMessageEncoder();
         
@@ -39,6 +37,10 @@
         buf.flip();
         
         out.write( buf );
+    }
+
+    public void dispose( IoSession arg0 ) throws Exception
+    {
     }
 }
 

Copied: directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolCodecFactory.java (from r330736, directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolProvider.java)
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolCodecFactory.java?p2=directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolCodecFactory.java&p1=directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolProvider.java&r1=330736&r2=330760&rev=330760&view=diff
==============================================================================
--- directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolProvider.java (original)
+++ directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolCodecFactory.java Fri Nov  4 00:47:32 2005
@@ -17,42 +17,32 @@
 
 package org.apache.dhcp.protocol;
 
-import org.apache.mina.protocol.ProtocolCodecFactory;
-import org.apache.mina.protocol.ProtocolDecoder;
-import org.apache.mina.protocol.ProtocolEncoder;
-import org.apache.mina.protocol.ProtocolHandler;
-import org.apache.mina.protocol.ProtocolProvider;
+import org.apache.mina.filter.codec.ProtocolCodecFactory;
+import org.apache.mina.filter.codec.ProtocolDecoder;
+import org.apache.mina.filter.codec.ProtocolEncoder;
 
 
-public class DhcpProtocolProvider implements ProtocolProvider
+public class DhcpProtocolCodecFactory implements ProtocolCodecFactory
 {
-    // Protocol handler is usually a singleton.
-    private static ProtocolHandler HANDLER = new DhcpProtocolHandler();
-
     // Codec factory is also usually a singleton.
-    private static ProtocolCodecFactory CODEC_FACTORY = new ProtocolCodecFactory()
+    private static DhcpProtocolCodecFactory INSTANCE =
+        new DhcpProtocolCodecFactory();
+    
+    public static DhcpProtocolCodecFactory getInstance()
     {
-        public ProtocolEncoder newEncoder()
-        {
-            // Create a new encoder.
-            return new DhcpEncoder();
-        }
-
-        public ProtocolDecoder newDecoder()
-        {
-            // Create a new decoder.
-            return new DhcpDecoder();
-        }
-    };
+        return INSTANCE;
+    }
 
-    public ProtocolCodecFactory getCodecFactory()
+    public ProtocolEncoder getEncoder()
     {
-        return CODEC_FACTORY;
+        // Create a new encoder.
+        return new DhcpEncoder();
     }
 
-    public ProtocolHandler getHandler()
+    public ProtocolDecoder getDecoder()
     {
-        return HANDLER;
+        // Create a new decoder.
+        return new DhcpDecoder();
     }
 }
 

Modified: directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolHandler.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolHandler.java?rev=330760&r1=330759&r2=330760&view=diff
==============================================================================
--- directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolHandler.java (original)
+++ directory/protocol-providers/dhcp/trunk/src/java/org/apache/dhcp/protocol/DhcpProtocolHandler.java Fri Nov  4 00:47:32 2005
@@ -17,43 +17,47 @@
 
 package org.apache.dhcp.protocol;
 
-import java.io.IOException;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 
 import org.apache.dhcp.DhcpService;
 import org.apache.dhcp.messages.DhcpMessage;
 import org.apache.dhcp.service.DhcpServiceImpl;
+import org.apache.mina.common.ConnectFuture;
 import org.apache.mina.common.IdleStatus;
-import org.apache.mina.io.datagram.DatagramConnector;
-import org.apache.mina.protocol.ProtocolHandler;
-import org.apache.mina.protocol.ProtocolSession;
-import org.apache.mina.protocol.io.IoProtocolConnector;
+import org.apache.mina.common.IoConnector;
+import org.apache.mina.common.IoHandler;
+import org.apache.mina.common.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.transport.socket.nio.DatagramConnector;
 
 
-public class DhcpProtocolHandler implements ProtocolHandler
+public class DhcpProtocolHandler implements IoHandler
 {
-    public void sessionCreated( ProtocolSession session )
+    public void sessionCreated( IoSession session ) throws Exception
     {
         System.out.println( session.getRemoteAddress() + " CREATED" );
+        session.getFilterChain().addFirst(
+                "codec",
+                new ProtocolCodecFilter( new DhcpProtocolCodecFactory() ) );
     }
 
-    public void sessionOpened( ProtocolSession session )
+    public void sessionOpened( IoSession session )
     {
         System.out.println( session.getRemoteAddress() + " OPENED" );
     }
 
-    public void sessionClosed( ProtocolSession session )
+    public void sessionClosed( IoSession session )
     {
         System.out.println( session.getRemoteAddress() + " CLOSED" );
     }
 
-    public void sessionIdle( ProtocolSession session, IdleStatus status )
+    public void sessionIdle( IoSession session, IdleStatus status )
     {
         System.out.println( session.getRemoteAddress() + " IDLE(" + status + ")" );
     }
 
-    public void exceptionCaught( ProtocolSession session, Throwable cause )
+    public void exceptionCaught( IoSession session, Throwable cause )
     {
         System.out.println( session.getRemoteAddress() + " EXCEPTION" );
         cause.printStackTrace( System.out );
@@ -61,7 +65,7 @@
         session.close();
     }
 
-    public void messageReceived( ProtocolSession session, Object message )
+    public void messageReceived( IoSession session, Object message ) throws Exception
     {
         System.out.println( session.getRemoteAddress() + " RCVD: " + message );
         
@@ -72,22 +76,18 @@
             DhcpService dhcpService = new DhcpServiceImpl();
             DhcpMessage reply = dhcpService.getReplyFor( request );
             
-            try
-			{
-            	int PORT = 68;
-                IoProtocolConnector connector = new IoProtocolConnector( new DatagramConnector() );
-                InetAddress broadcast = InetAddress.getByName( null );
-                ProtocolSession replySession = connector.connect( new InetSocketAddress( broadcast, PORT ), new DhcpProtocolProvider() );
-                replySession.write( reply );
-			}
-            catch (IOException ioe)
-			{
-            	ioe.printStackTrace();
-			}
+        	int PORT = 68;
+            IoConnector connector = new DatagramConnector();
+            InetAddress broadcast = InetAddress.getByName( null );
+            ConnectFuture future = connector.connect( new InetSocketAddress( broadcast, PORT ), new DhcpProtocolHandler() );
+            future.join();
+            IoSession replySession = future.getSession();
+            replySession.write( reply ).join();
+            replySession.close();
         }
     }
 
-    public void messageSent( ProtocolSession session, Object message )
+    public void messageSent( IoSession session, Object message )
     {
         System.out.println( session.getRemoteAddress() + " SENT: " + message );
     }