You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2008/11/07 02:03:31 UTC

svn commit: r712028 [2/2] - in /mina/branches/mina-new-chain2: core/src/main/java/org/apache/mina/core/filterchain/ core/src/main/java/org/apache/mina/core/polling/ core/src/main/java/org/apache/mina/core/service/ core/src/main/java/org/apache/mina/cor...

Modified: mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java?rev=712028&r1=712027&r2=712028&view=diff
==============================================================================
--- mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java (original)
+++ mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java Thu Nov  6 17:03:23 2008
@@ -41,47 +41,47 @@
     protected abstract void filter(IoFilterEvent event) throws Exception;
 
     @Override
-    public final void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.SESSION_CREATED, session, null));
+    public final void sessionCreated(int index, IoSession session) throws Exception {
+        filter(new IoFilterEvent(index+1, IoEventType.SESSION_CREATED, session, null));
     }
 
     @Override
-    public final void sessionOpened(NextFilter nextFilter, IoSession session) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.SESSION_OPENED, session, null));
+    public final void sessionOpened(int index, IoSession session) throws Exception {
+        filter(new IoFilterEvent(index+1, IoEventType.SESSION_OPENED, session, null));
     }
 
     @Override
-    public final void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.SESSION_CLOSED, session, null));
+    public final void sessionClosed(int index, IoSession session) throws Exception {
+        filter(new IoFilterEvent(index+1, IoEventType.SESSION_CLOSED, session, null));
     }
 
     @Override
-    public final void sessionIdle(NextFilter nextFilter, IoSession session, IdleStatus status) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.SESSION_IDLE, session, status));
+    public final void sessionIdle(int index, IoSession session, IdleStatus status) throws Exception {
+        filter(new IoFilterEvent(index+1, IoEventType.SESSION_IDLE, session, status));
     }
 
     @Override
-    public final void exceptionCaught(NextFilter nextFilter, IoSession session, Throwable cause) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.EXCEPTION_CAUGHT, session, cause));
+    public final void exceptionCaught(int index, IoSession session, Throwable cause) throws Exception {
+        filter(new IoFilterEvent(index+1, IoEventType.EXCEPTION_CAUGHT, session, cause));
     }
 
     @Override
-    public final void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.MESSAGE_RECEIVED, session, message));
+    public final void messageReceived(int index, IoSession session, Object message) throws Exception {
+        filter(new IoFilterEvent(index+1, IoEventType.MESSAGE_RECEIVED, session, message));
     }
 
     @Override
-    public final void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.MESSAGE_SENT, session, writeRequest));
+    public final void messageSent(int index, IoSession session, WriteRequest writeRequest) throws Exception {
+        filter(new IoFilterEvent(index+1, IoEventType.MESSAGE_SENT, session, writeRequest));
     }
 
     @Override
-    public final void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.WRITE, session, writeRequest));
+    public final void filterWrite(int index, IoSession session, WriteRequest writeRequest) throws Exception {
+        filter(new IoFilterEvent(index+1, IoEventType.WRITE, session, writeRequest));
     }
 
     @Override
-    public final void filterClose(NextFilter nextFilter, IoSession session) throws Exception {
-        filter(new IoFilterEvent(nextFilter, IoEventType.CLOSE, session, null));
+    public final void filterClose(int index, IoSession session) throws Exception {
+        filter(new IoFilterEvent(index, IoEventType.CLOSE, session, null));
     }
 }

Modified: mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java?rev=712028&r1=712027&r2=712028&view=diff
==============================================================================
--- mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java (original)
+++ mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java Thu Nov  6 17:03:23 2008
@@ -25,8 +25,6 @@
 import java.nio.channels.SelectionKey;
 
 import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.filterchain.DefaultIoFilterChain;
-import org.apache.mina.core.filterchain.IoFilterChain;
 import org.apache.mina.core.service.DefaultTransportMetadata;
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.service.IoProcessor;
@@ -51,7 +49,6 @@
 
     private final IoService service;
     private final DatagramSessionConfig config;
-    private final IoFilterChain filterChain = new DefaultIoFilterChain(this);
     private final DatagramChannel ch;
     private final IoHandler handler;
     private final InetSocketAddress localAddress;
@@ -96,10 +93,6 @@
         return config;
     }
 
-    public IoFilterChain getFilterChain() {
-        return filterChain;
-    }
-
     @Override
     DatagramChannel getChannel() {
         return ch;

Modified: mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioSession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioSession.java?rev=712028&r1=712027&r2=712028&view=diff
==============================================================================
--- mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioSession.java (original)
+++ mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioSession.java Thu Nov  6 17:03:23 2008
@@ -21,7 +21,10 @@
 
 import java.nio.channels.ByteChannel;
 import java.nio.channels.SelectionKey;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
+import org.apache.mina.core.filterchain.IoFilter;
 import org.apache.mina.core.session.AbstractIoSession;
 
 /**
@@ -31,6 +34,27 @@
  * @version $Rev$, $Date$
  */
 public abstract class NioSession extends AbstractIoSession {
+    private final List<IoFilter> filterChain = new CopyOnWriteArrayList<IoFilter>();
+
+    public List<IoFilter> getFilterChain() {
+        return filterChain;
+    }
+
+    public void setFilterChain(List<IoFilter> filters) {
+    	if (filters == null) {
+    		return;
+    	}
+    	
+		filterChain.addAll(filters);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public IoFilter getFilter(int index) {
+        return filterChain.get(index);
+    }
+
     abstract ByteChannel getChannel();
     abstract SelectionKey getSelectionKey();
     abstract void setSelectionKey(SelectionKey key);

Modified: mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java?rev=712028&r1=712027&r2=712028&view=diff
==============================================================================
--- mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java (original)
+++ mina/branches/mina-new-chain2/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java Thu Nov  6 17:03:23 2008
@@ -23,12 +23,13 @@
 import java.net.SocketException;
 import java.nio.channels.SelectionKey;
 import java.nio.channels.SocketChannel;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.mina.core.RuntimeIoException;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.file.FileRegion;
-import org.apache.mina.core.filterchain.DefaultIoFilterChain;
-import org.apache.mina.core.filterchain.IoFilterChain;
+import org.apache.mina.core.filterchain.IoFilter;
 import org.apache.mina.core.service.DefaultTransportMetadata;
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.service.IoProcessor;
@@ -60,8 +61,6 @@
 
     private final IoProcessor<NioSession> processor;
 
-    private final IoFilterChain filterChain = new DefaultIoFilterChain(this);
-
     private final SocketChannel ch;
 
     private final IoHandler handler;
@@ -83,6 +82,8 @@
         this.ch = ch;
         this.handler = service.getHandler();
         this.config.setAll(service.getSessionConfig());
+        service.getFilterChain().add(service.getTailFilter());
+        setFilterChain(service.getFilterChain());
     }
 
     public IoService getService() {
@@ -98,10 +99,6 @@
         return processor;
     }
 
-    public IoFilterChain getFilterChain() {
-        return filterChain;
-    }
-
     public TransportMetadata getTransportMetadata() {
         return METADATA;
     }

Modified: mina/branches/mina-new-chain2/example/src/main/java/org/apache/mina/example/chat/Main.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain2/example/src/main/java/org/apache/mina/example/chat/Main.java?rev=712028&r1=712027&r2=712028&view=diff
==============================================================================
--- mina/branches/mina-new-chain2/example/src/main/java/org/apache/mina/example/chat/Main.java (original)
+++ mina/branches/mina-new-chain2/example/src/main/java/org/apache/mina/example/chat/Main.java Thu Nov  6 17:03:23 2008
@@ -20,8 +20,9 @@
 package org.apache.mina.example.chat;
 
 import java.net.InetSocketAddress;
+import java.util.List;
 
-import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
+import org.apache.mina.core.filterchain.IoFilter;
 import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
@@ -45,17 +46,17 @@
 
     public static void main(String[] args) throws Exception {
         NioSocketAcceptor acceptor = new NioSocketAcceptor();
-        DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
+        List<IoFilter> chain = acceptor.getFilterChain();
 
         MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
-        chain.addLast("mdc", mdcInjectionFilter);
+        chain.add(mdcInjectionFilter);
 
         // Add SSL filter if SSL is enabled.
         if (USE_SSL) {
             addSSLSupport(chain);
         }
 
-        chain.addLast("codec", new ProtocolCodecFilter(
+        chain.add(new ProtocolCodecFilter(
                 new TextLineCodecFactory()));
 
         addLogger(chain);
@@ -67,17 +68,17 @@
         System.out.println("Listening on port " + PORT);
     }
 
-    private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
+    private static void addSSLSupport(List<IoFilter> chain)
             throws Exception {
         SslFilter sslFilter = new SslFilter(BogusSslContextFactory
                 .getInstance(true));
-        chain.addLast("sslFilter", sslFilter);
+        chain.add(sslFilter);
         System.out.println("SSL ON");
     }
 
-    private static void addLogger(DefaultIoFilterChainBuilder chain)
+    private static void addLogger(List<IoFilter> chain)
             throws Exception {
-        chain.addLast("logger", new LoggingFilter());
+        chain.add(new LoggingFilter());
         System.out.println("Logging ON");
     }
 }

Modified: mina/branches/mina-new-chain2/example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain2/example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java?rev=712028&r1=712027&r2=712028&view=diff
==============================================================================
--- mina/branches/mina-new-chain2/example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java (original)
+++ mina/branches/mina-new-chain2/example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java Thu Nov  6 17:03:23 2008
@@ -69,16 +69,16 @@
             IoFilter CODEC_FILTER = new ProtocolCodecFilter(
                     new TextLineCodecFactory());
             
-            connector.getFilterChain().addLast("mdc", new MdcInjectionFilter());
-            connector.getFilterChain().addLast("codec", CODEC_FILTER);
-            connector.getFilterChain().addLast("logger", LOGGING_FILTER);
+            connector.getFilterChain().add(new MdcInjectionFilter());
+            connector.getFilterChain().add(CODEC_FILTER);
+            connector.getFilterChain().add(LOGGING_FILTER);
 
             if (useSsl) {
                 SSLContext sslContext = BogusSslContextFactory
                         .getInstance(false);
                 SslFilter sslFilter = new SslFilter(sslContext);
                 sslFilter.setUseClientMode(true);
-                connector.getFilterChain().addLast("sslFilter", sslFilter);
+                connector.getFilterChain().add(sslFilter);
             }
 
             connector.setHandler(handler);