*/
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();
- }
}