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);