Netty Replicator - improve the reconnection and keepalive mechanisms
[mdsal.git] / replicate / mdsal-replicate-netty / src / main / java / org / opendaylight / mdsal / replicate / netty / SinkKeepaliveHandler.java
similarity index 50%
rename from replicate/mdsal-replicate-netty/src/main/java/org/opendaylight/mdsal/replicate/netty/KeepaliveHandler.java
rename to replicate/mdsal-replicate-netty/src/main/java/org/opendaylight/mdsal/replicate/netty/SinkKeepaliveHandler.java
index 4803d3e59d57470ee4a29339260471ba431fd2f1..753bfe0c464b41f7a8b8bc5a30713982972c856b 100644 (file)
@@ -7,35 +7,21 @@
  */
 package org.opendaylight.mdsal.replicate.netty;
 
-import static java.util.Objects.requireNonNull;
-
-import io.netty.channel.ChannelDuplexHandler;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.timeout.IdleStateEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-class KeepaliveHandler extends ChannelDuplexHandler {
-    private static final Logger LOG = LoggerFactory.getLogger(KeepaliveHandler.class);
-
-    private final Runnable reconnect;
-
-    KeepaliveHandler(final Runnable reconnectCallback) {
-        this.reconnect = requireNonNull(reconnectCallback, "Reconnect callback should not be null");
-    }
+final class SinkKeepaliveHandler extends AbstractKeepaliveHandler {
+    private static final Logger LOG = LoggerFactory.getLogger(SinkKeepaliveHandler.class);
 
     @Override
     public void userEventTriggered(final ChannelHandlerContext ctx, final Object evt) {
         if (evt instanceof IdleStateEvent) {
-            ctx.writeAndFlush(Constants.PING);
+            LOG.debug("IdleStateEvent received. Closing channel {}.", ctx.channel());
+            ctx.close();
         } else {
             ctx.fireUserEventTriggered(evt);
         }
     }
-
-    @Override
-    public void exceptionCaught(final ChannelHandlerContext ctx, final Throwable cause) {
-        LOG.warn("There was an exception on the channel. Attempting to reconnect.", cause);
-        reconnect.run();
-    }
 }