b31a021dd1b57081c86db68f22e8afad3e9b9720
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / core / IdleHandler.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
2 package org.opendaylight.openflowjava.protocol.impl.core;
3
4 import java.util.concurrent.TimeUnit;
5
6 import io.netty.channel.ChannelHandlerContext;
7 import io.netty.handler.timeout.IdleState;
8 import io.netty.handler.timeout.IdleStateEvent;
9 import io.netty.handler.timeout.IdleStateHandler;
10
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SwitchIdleEventBuilder;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
14
15 /**
16  * 
17  * @author michal.polkorab
18  *
19  */
20 public class IdleHandler extends IdleStateHandler{
21
22     private static final Logger LOGGER = LoggerFactory.getLogger(IdleHandler.class);
23
24     /**
25      * 
26      * @param readerIdleTime
27      * @param writerIdleTime
28      * @param allIdleTime
29      * @param unit
30      */
31     public IdleHandler(long readerIdleTime, long writerIdleTime,
32             long allIdleTime, TimeUnit unit) {
33         super(readerIdleTime, writerIdleTime, allIdleTime, unit);
34     }
35
36     @Override
37     protected void channelIdle(ChannelHandlerContext ctx, IdleStateEvent evt)
38             throws Exception {
39         if ((evt.state() == IdleState.READER_IDLE) && (evt.isFirst())) {
40             LOGGER.info("Switch idle");
41             SwitchIdleEventBuilder builder = new SwitchIdleEventBuilder();
42             builder.setInfo("Switch idle");
43             ctx.fireChannelRead(builder.build());
44         }
45     }
46
47 }