You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2011/03/14 19:08:55 UTC

svn commit: r1081498 - in /mina/vysper/trunk/server/core/src/main/java/org/apache/vysper: mina/TCPEndpoint.java xmpp/server/DefaultServerRuntimeContext.java

Author: ngn
Date: Mon Mar 14 18:08:55 2011
New Revision: 1081498

URL: http://svn.apache.org/viewvc?rev=1081498&view=rev
Log:
Use OrderThreadPoolExecutor instead of QueueStanzaProcessor in order to maintain stanza order within a session (VYSPER-275)

Modified:
    mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java
    mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java?rev=1081498&r1=1081497&r2=1081498&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java Mon Mar 14 18:08:55 2011
@@ -21,9 +21,12 @@ package org.apache.vysper.mina;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.executor.ExecutorFilter;
+import org.apache.mina.filter.executor.OrderedThreadPoolExecutor;
 import org.apache.mina.transport.socket.SocketAcceptor;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.apache.vysper.mina.codec.XMPPProtocolCodecFactory;
@@ -51,6 +54,14 @@ public class TCPEndpoint implements Endp
     public void setServerRuntimeContext(ServerRuntimeContext serverRuntimeContext) {
         this.serverRuntimeContext = serverRuntimeContext;
     }
+    
+    public int getPort() {
+        if(port != 0) {
+            return port;
+        } else {
+            return acceptor.getLocalAddress().getPort();
+        }
+    }
 
     public void setPort(int port) {
         this.port = port;
@@ -60,9 +71,13 @@ public class TCPEndpoint implements Endp
         NioSocketAcceptor acceptor = new NioSocketAcceptor();
 
         DefaultIoFilterChainBuilder filterChainBuilder = new DefaultIoFilterChainBuilder();
-        //filterChainBuilder.addLast("executorFilter", new OrderedThreadPoolExecutor());
         filterChainBuilder.addLast("xmppCodec", new ProtocolCodecFilter(new XMPPProtocolCodecFactory()));
         filterChainBuilder.addLast("loggingFilter", new StanzaLoggingFilter());
+        
+        int coreThreadCount = 10;
+        int maxThreadCount = 20;
+        int threadTimeoutSeconds = 2 * 60;
+        filterChainBuilder.addLast("executorFilter", new ExecutorFilter(new OrderedThreadPoolExecutor(coreThreadCount, maxThreadCount, threadTimeoutSeconds, TimeUnit.SECONDS)));
         acceptor.setFilterChainBuilder(filterChainBuilder);
 
         XmppIoHandlerAdapter adapter = new XmppIoHandlerAdapter();

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java?rev=1081498&r1=1081497&r2=1081498&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java Mon Mar 14 18:08:55 2011
@@ -97,7 +97,7 @@ public class DefaultServerRuntimeContext
     /**
      * 'input stream': receives stanzas issued by client sessions to be handled by the server
      */
-    private StanzaProcessor stanzaProcessor = new QueuedStanzaProcessor(new ProtocolWorker());
+    private StanzaProcessor stanzaProcessor = new ProtocolWorker();
 
     /**
      * 'output stream': receives stanzas issued by a session, which are going to other sessions/servers