-/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
-package org.opendaylight.openflowjava.protocol.impl.core;\r
-\r
-import io.netty.channel.ChannelHandlerContext;\r
-import io.netty.channel.ChannelInboundHandlerAdapter;\r
-\r
-import org.opendaylight.openflowjava.protocol.impl.connection.MessageConsumer;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.DisconnectEventBuilder;\r
-import org.opendaylight.yangtools.yang.binding.DataObject;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-/**\r
- * @author michal.polkorab\r
- *\r
- */\r
-public class DelegatingInboundHandler extends ChannelInboundHandlerAdapter {\r
-\r
- private static final Logger LOGGER = LoggerFactory.getLogger(DelegatingInboundHandler.class);\r
- \r
- protected MessageConsumer consumer;\r
- private boolean inactiveMessageSent = false;\r
- \r
- /** \r
- * Constructs class + creates and sets MessageConsumer\r
- * @param connectionAdapter reference for adapter communicating with upper layers outside library\r
- */\r
- public DelegatingInboundHandler(MessageConsumer connectionAdapter) {\r
- LOGGER.info("Creating DelegatingInboundHandler");\r
- consumer = connectionAdapter;\r
- }\r
- \r
- @Override\r
- public void channelRead(ChannelHandlerContext ctx, final Object msg)\r
- throws Exception {\r
- LOGGER.debug("Reading");\r
- consumer.consume((DataObject) msg);\r
- }\r
- \r
- @Override\r
- public void channelInactive(ChannelHandlerContext ctx) throws Exception {\r
- LOGGER.info("Channel inactive");\r
- if (!inactiveMessageSent) {\r
- DisconnectEventBuilder builder = new DisconnectEventBuilder();\r
- builder.setInfo("Channel inactive");\r
- consumer.consume(builder.build());\r
- inactiveMessageSent = true;\r
- }\r
- }\r
-\r
- @Override\r
- public void channelUnregistered(ChannelHandlerContext ctx) throws Exception {\r
- LOGGER.info("Channel unregistered");\r
- if (!inactiveMessageSent) {\r
- DisconnectEventBuilder builder = new DisconnectEventBuilder();\r
- builder.setInfo("Channel unregistered");\r
- consumer.consume(builder.build());\r
- inactiveMessageSent = true;\r
- }\r
- }\r
- \r
-}\r
+/*
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.openflowjava.protocol.impl.core;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelInboundHandlerAdapter;
+
+import org.opendaylight.openflowjava.protocol.impl.core.connection.ConnectionAdapterImpl;
+import org.opendaylight.openflowjava.protocol.impl.core.connection.MessageConsumer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.DisconnectEventBuilder;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Preconditions;
+
+/**
+ * Holds reference to {@link ConnectionAdapterImpl} and passes messages for further processing.
+ * Also informs on switch disconnection.
+ * @author michal.polkorab
+ */
+public class DelegatingInboundHandler extends ChannelInboundHandlerAdapter {
+
+ private static final Logger LOG = LoggerFactory.getLogger(DelegatingInboundHandler.class);
+
+ private final MessageConsumer consumer;
+ private boolean inactiveMessageSent = false;
+
+ /**
+ * Constructs class + creates and sets MessageConsumer
+ * @param connectionAdapter reference for adapter communicating with upper layers outside library
+ */
+ public DelegatingInboundHandler(final MessageConsumer connectionAdapter) {
+ LOG.trace("Creating DelegatingInboundHandler");
+ consumer = Preconditions.checkNotNull(connectionAdapter);
+ }
+
+ @Override
+ public void channelRead(final ChannelHandlerContext ctx, final Object msg) {
+ consumer.consume((DataObject) msg);
+ }
+
+ @Override
+ public void channelInactive(final ChannelHandlerContext ctx) {
+ LOG.debug("Channel inactive");
+ if (!inactiveMessageSent) {
+ DisconnectEventBuilder builder = new DisconnectEventBuilder();
+ builder.setInfo("Channel inactive");
+ consumer.consume(builder.build());
+ inactiveMessageSent = true;
+ }
+ }
+
+ @Override
+ public void channelUnregistered(final ChannelHandlerContext ctx) {
+ LOG.debug("Channel unregistered");
+ if (!inactiveMessageSent) {
+ DisconnectEventBuilder builder = new DisconnectEventBuilder();
+ builder.setInfo("Channel unregistered");
+ consumer.consume(builder.build());
+ inactiveMessageSent = true;
+ }
+ }
+
+}