Revert removal of deprecated constructor in AbstractDispatcher 00/2700/2
authorMaros Marsalek <mmarsale@cisco.com>
Wed, 13 Nov 2013 11:49:52 +0000 (12:49 +0100)
committerMaros Marsalek <mmarsale@cisco.com>
Wed, 13 Nov 2013 12:55:42 +0000 (13:55 +0100)
Change-Id: Ibe0197dc1b7a4a3c6db0fe2173443b62b997ae95
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImpl.java
framework/src/main/java/org/opendaylight/protocol/framework/AbstractDispatcher.java
framework/src/test/java/org/opendaylight/protocol/framework/SimpleDispatcher.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPDispatcherImpl.java

index f53c85ea5df5f6ef3d72845fa278aff4e952abec..2e3f819e70e577150e5779d9d50199d1e9de573a 100644 (file)
@@ -57,6 +57,6 @@ public final class BGPDispatcherImpl extends AbstractDispatcher<BGPSessionImpl,
        }
 
        @Override
-               public void close() throws Exception {
+       public void close() {
        }
 }
index c4e7d31f7476cd6c5f7470ffa866e8e337c64045..28529824886f191ab964976e906fc2506ceada93 100644 (file)
@@ -31,7 +31,7 @@ import java.net.InetSocketAddress;
  * Dispatcher class for creating servers and clients. The idea is to first create servers and clients and the run the
  * start method that will handle sockets in different thread.
  */
-public abstract class AbstractDispatcher<S extends ProtocolSession<?>, L extends SessionListener<?, ?, ?>> {
+public abstract class AbstractDispatcher<S extends ProtocolSession<?>, L extends SessionListener<?, ?, ?>> implements Closeable {
 
        protected interface PipelineInitializer<S extends ProtocolSession<?>> {
                /**
@@ -51,6 +51,16 @@ public abstract class AbstractDispatcher<S extends ProtocolSession<?>, L extends
 
        private final EventLoopGroup workerGroup;
 
+       /**
+        * Internally creates new instances of NioEventLoopGroup, might deplete system resources and result in Too many open files exception.
+        *
+        * @deprecated use {@link AbstractDispatcher#AbstractDispatcher(io.netty.channel.EventLoopGroup, io.netty.channel.EventLoopGroup)} instead.
+        */
+       @Deprecated
+       protected AbstractDispatcher() {
+               this(new NioEventLoopGroup(),new NioEventLoopGroup());
+       }
+
        protected AbstractDispatcher(EventLoopGroup bossGroup, EventLoopGroup workerGroup) {
                this.bossGroup = bossGroup;
                this.workerGroup = workerGroup;
@@ -130,4 +140,17 @@ public abstract class AbstractDispatcher<S extends ProtocolSession<?>, L extends
 
        }
 
+    /**
+     * @deprecated Should only be used with {@link AbstractDispatcher#AbstractDispatcher()}
+     */
+    @Deprecated
+    @Override
+    public void close() {
+        try {
+            this.workerGroup.shutdownGracefully();
+        } finally {
+            this.bossGroup.shutdownGracefully();
+        }
+    }
+
 }
index 8542c784948aa441ad95ee6f797b0de7f0d0628e..11e6bfbe1d5e3a1c0b8b1f6daae3beb8ee0142bf 100644 (file)
@@ -51,4 +51,7 @@ public class SimpleDispatcher extends AbstractDispatcher<SimpleSession, SimpleSe
                return super.createServer(address, new SimplePipelineInitializer(listenerFactory));
        }
 
+    @Override
+    public void close() {
+    }
 }
index f89990ed726ebb145b352e131bd77380747323b8..686c0d86ba84b66d74b15eedb61819d9ee96b1af 100644 (file)
@@ -56,7 +56,7 @@ public class PCEPDispatcherImpl extends AbstractDispatcher<PCEPSessionImpl, PCEP
                });
        }
 
-       @Override
-               public void close() throws Exception {
-       }
+    @Override
+    public void close() {
+    }
 }