You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/10/29 20:57:44 UTC

svn commit: r1194972 - in /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl: AbstractAsyncServer.java AbstractChannelPipelineFactory.java

Author: norman
Date: Sat Oct 29 18:57:43 2011
New Revision: 1194972

URL: http://svn.apache.org/viewvc?rev=1194972&view=rev
Log:
Stop Timer on unbind. See PROTOCOLS-46

Modified:
    james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractAsyncServer.java
    james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java

Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractAsyncServer.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractAsyncServer.java?rev=1194972&r1=1194971&r2=1194972&view=diff
==============================================================================
--- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractAsyncServer.java (original)
+++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractAsyncServer.java Sat Oct 29 18:57:43 2011
@@ -31,6 +31,7 @@ import org.jboss.netty.channel.group.Cha
 import org.jboss.netty.channel.group.DefaultChannelGroup;
 import org.jboss.netty.channel.socket.ServerSocketChannelFactory;
 import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
+import org.jboss.netty.util.ExternalResourceReleasable;
 
 /**
  * Abstract base class for Servers which want to use async io
@@ -122,6 +123,10 @@ public abstract class AbstractAsyncServe
      */
     public synchronized void unbind() {
         if (started == false) return;
+        ChannelPipelineFactory factory = bootstrap.getPipelineFactory();
+        if (factory instanceof ExternalResourceReleasable) {
+            ((ExternalResourceReleasable) factory).releaseExternalResources();
+        }
         channels.close().awaitUninterruptibly();
         bootstrap.releaseExternalResources();
         started = false;

Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java?rev=1194972&r1=1194971&r2=1194972&view=diff
==============================================================================
--- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java (original)
+++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractChannelPipelineFactory.java Sat Oct 29 18:57:43 2011
@@ -28,6 +28,7 @@ import org.jboss.netty.handler.codec.fra
 import org.jboss.netty.handler.codec.frame.Delimiters;
 import org.jboss.netty.handler.execution.ExecutionHandler;
 import org.jboss.netty.handler.stream.ChunkedWriteHandler;
+import org.jboss.netty.util.ExternalResourceReleasable;
 import org.jboss.netty.util.HashedWheelTimer;
 
 /**
@@ -35,7 +36,7 @@ import org.jboss.netty.util.HashedWheelT
  * 
  *
  */
-public abstract class AbstractChannelPipelineFactory implements ChannelPipelineFactory{
+public abstract class AbstractChannelPipelineFactory implements ChannelPipelineFactory, ExternalResourceReleasable{
 
     public final static int MAX_LINE_LENGTH = 8192;
     private final ConnectionLimitUpstreamHandler connectionLimitHandler;
@@ -98,6 +99,11 @@ public abstract class AbstractChannelPip
      * @return coreHandeler
      */
     protected abstract ChannelUpstreamHandler createHandler();
+
+    @Override
+    public void releaseExternalResources() {
+        timer.stop();
+    }
     
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org