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.handler.codec.MessageToMessageDecoder;
\r
7 import java.util.List;
\r
9 import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory;
\r
10 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
\r
11 import org.opendaylight.yangtools.yang.binding.DataObject;
\r
12 import org.slf4j.Logger;
\r
13 import org.slf4j.LoggerFactory;
\r
16 * Transforms OpenFlow Protocol messages to POJOs
\r
17 * @author michal.polkorab
\r
19 public class OFDecoder extends MessageToMessageDecoder<VersionMessageWrapper> {
\r
21 private static final Logger LOGGER = LoggerFactory.getLogger(OFDecoder.class);
\r
24 * Constructor of class
\r
26 public OFDecoder() {
\r
27 LOGGER.debug("Creating OF 1.3 Decoder");
\r
31 protected void decode(ChannelHandlerContext ctx, VersionMessageWrapper msg,
\r
32 List<Object> out) throws Exception {
\r
33 if (LOGGER.isDebugEnabled()) {
\r
34 LOGGER.debug("VersionMessageWrapper received");
\r
35 LOGGER.debug("buffer size: " + msg.getMessageBuffer().readableBytes());
\r
36 LOGGER.debug("<< " + ByteBufUtils.byteBufToHexString(msg.getMessageBuffer()));
\r
38 DataObject dataObject = null;
\r
40 dataObject = DeserializationFactory.bufferToMessage(msg.getMessageBuffer(),
\r
42 } catch(Exception e) {
\r
43 LOGGER.error("Message deserialization failed");
\r
44 LOGGER.error(e.getMessage(), e);
\r
47 if (dataObject == null) {
\r
48 LOGGER.warn("Translated POJO is null");
\r
51 msg.getMessageBuffer().release();
\r
52 out.add(dataObject);
\r