Fixed netty & checkstyle failures
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / core / IdleHandler.java
index 1284618cae15802802ecf7f3d2ad645b0d71c038..5f408e6c6c9396073786cdef2adf78c079c6e057 100644 (file)
@@ -8,12 +8,10 @@
 
 package org.opendaylight.openflowjava.protocol.impl.core;
 
-import java.util.concurrent.TimeUnit;
-
 import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.timeout.IdleState;
-import io.netty.handler.timeout.IdleStateEvent;
-import io.netty.handler.timeout.IdleStateHandler;
+import io.netty.handler.timeout.ReadTimeoutHandler;
+
+import java.util.concurrent.TimeUnit;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SwitchIdleEventBuilder;
 import org.slf4j.Logger;
@@ -23,30 +21,33 @@ import org.slf4j.LoggerFactory;
  * Detects idle state of switch and informs upper layers
  * @author michal.polkorab
  */
-public class IdleHandler extends IdleStateHandler{
+public class IdleHandler extends ReadTimeoutHandler {
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(IdleHandler.class);
+    private static final Logger LOG = LoggerFactory.getLogger(IdleHandler.class);
+    private boolean first = true;
 
     /**
      * @param readerIdleTime
-     * @param writerIdleTime
-     * @param allIdleTime
      * @param unit
      */
-    public IdleHandler(long readerIdleTime, long writerIdleTime,
-            long allIdleTime, TimeUnit unit) {
-        super(readerIdleTime, writerIdleTime, allIdleTime, unit);
+    public IdleHandler(final long readerIdleTime, final TimeUnit unit) {
+        super(readerIdleTime, unit);
     }
 
     @Override
-    protected void channelIdle(ChannelHandlerContext ctx, IdleStateEvent evt)
-            throws Exception {
-        if ((evt.state() == IdleState.READER_IDLE) && (evt.isFirst())) {
-            LOGGER.debug("Switch idle");
+    public void channelRead(final ChannelHandlerContext ctx, final Object msg) throws Exception {
+        super.channelRead(ctx, msg);
+        first = true;
+    }
+
+    @Override
+    protected void readTimedOut(final ChannelHandlerContext ctx) throws Exception {
+        if (first) {
+            LOG.debug("Switch idle");
             SwitchIdleEventBuilder builder = new SwitchIdleEventBuilder();
             builder.setInfo("Switch idle");
             ctx.fireChannelRead(builder.build());
+            first = false;
         }
     }
-
 }