ofp_packet_queue structure - implemented missing fields
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / core / DelegatingInboundHandler.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.core;\r
3 \r
4 import io.netty.channel.ChannelHandlerContext;\r
5 import io.netty.channel.ChannelInboundHandlerAdapter;\r
6 \r
7 import org.opendaylight.openflowjava.protocol.impl.connection.MessageConsumer;\r
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.DisconnectEventBuilder;\r
9 import org.opendaylight.yangtools.yang.binding.DataObject;\r
10 import org.slf4j.Logger;\r
11 import org.slf4j.LoggerFactory;\r
12 \r
13 /**\r
14  * @author michal.polkorab\r
15  *\r
16  */\r
17 public class DelegatingInboundHandler extends ChannelInboundHandlerAdapter {\r
18 \r
19     private static final Logger LOGGER = LoggerFactory.getLogger(DelegatingInboundHandler.class);\r
20     \r
21     protected MessageConsumer consumer;\r
22     private boolean inactiveMessageSent = false;\r
23     \r
24     /** \r
25      * Constructs class + creates and sets MessageConsumer\r
26      * @param connectionAdapter reference for adapter communicating with upper layers outside library\r
27      */\r
28     public DelegatingInboundHandler(MessageConsumer connectionAdapter) {\r
29         LOGGER.debug("Creating DelegatingInboundHandler");\r
30         consumer = connectionAdapter;\r
31     }\r
32     \r
33     @Override\r
34     public void channelRead(ChannelHandlerContext ctx, final Object msg)\r
35             throws Exception {\r
36         LOGGER.debug("Reading");\r
37         consumer.consume((DataObject) msg);\r
38     }\r
39     \r
40     @Override\r
41     public void channelInactive(ChannelHandlerContext ctx) throws Exception {\r
42         LOGGER.info("Channel inactive");\r
43         if (!inactiveMessageSent) {\r
44             DisconnectEventBuilder builder = new DisconnectEventBuilder();\r
45             builder.setInfo("Channel inactive");\r
46             consumer.consume(builder.build());\r
47             inactiveMessageSent = true;\r
48         }\r
49     }\r
50 \r
51     @Override\r
52     public void channelUnregistered(ChannelHandlerContext ctx) throws Exception {\r
53         LOGGER.info("Channel unregistered");\r
54         if (!inactiveMessageSent) {\r
55             DisconnectEventBuilder builder = new DisconnectEventBuilder();\r
56             builder.setInfo("Channel unregistered");\r
57             consumer.consume(builder.build());\r
58             inactiveMessageSent = true;\r
59         }\r
60     }\r
61     \r
62 }\r