1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
\r
2 package org.opendaylight.openflowjava.protocol.impl.core;
\r
4 import io.netty.channel.ChannelHandlerContext;
\r
5 import io.netty.channel.ChannelInboundHandlerAdapter;
\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
14 * @author michal.polkorab
\r
17 public class DelegatingInboundHandler extends ChannelInboundHandlerAdapter {
\r
19 private static final Logger LOGGER = LoggerFactory.getLogger(DelegatingInboundHandler.class);
\r
21 protected MessageConsumer consumer;
\r
22 private boolean inactiveMessageSent = false;
\r
25 * Constructs class + creates and sets MessageConsumer
\r
26 * @param connectionAdapter reference for adapter communicating with upper layers outside library
\r
28 public DelegatingInboundHandler(MessageConsumer connectionAdapter) {
\r
29 LOGGER.debug("Creating DelegatingInboundHandler");
\r
30 consumer = connectionAdapter;
\r
34 public void channelRead(ChannelHandlerContext ctx, final Object msg)
\r
36 LOGGER.debug("Reading");
\r
37 consumer.consume((DataObject) msg);
\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
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