X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflow-protocol-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowjava%2Fprotocol%2Fimpl%2Fcore%2FOFDecoder.java;h=de419f8b005e8d82e8507498ae9c5c525b797eee;hb=272138f7081efbd9796a2a661c92c88727935235;hp=ee5780463ef5c28d16b7e600c21dc510c68191d6;hpb=dfaeef38744f68c8caad72e83cdfd23d83afba9a;p=openflowjava.git diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDecoder.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDecoder.java index ee578046..de419f8b 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDecoder.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDecoder.java @@ -14,7 +14,9 @@ import io.netty.handler.codec.MessageToMessageDecoder; import java.util.List; import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory; -import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; +import org.opendaylight.openflowjava.statistics.CounterEventTypes; +import org.opendaylight.openflowjava.statistics.StatisticsCounters; +import org.opendaylight.openflowjava.util.ByteBufUtils; import org.opendaylight.yangtools.yang.binding.DataObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,6 +28,9 @@ import org.slf4j.LoggerFactory; public class OFDecoder extends MessageToMessageDecoder { private static final Logger LOGGER = LoggerFactory.getLogger(OFDecoder.class); + private final StatisticsCounters statisticsCounter; + + // TODO: make this final? private DeserializationFactory deserializationFactory; /** @@ -33,29 +38,35 @@ public class OFDecoder extends MessageToMessageDecoder { */ public OFDecoder() { LOGGER.trace("Creating OF 1.3 Decoder"); + // TODO: pass as argument + statisticsCounter = StatisticsCounters.getInstance(); } @Override protected void decode(ChannelHandlerContext ctx, VersionMessageWrapper msg, List out) throws Exception { - LOGGER.debug("VersionMessageWrapper received"); - LOGGER.debug("<< " + ByteBufUtils.byteBufToHexString(msg.getMessageBuffer())); + statisticsCounter.incrementCounter(CounterEventTypes.US_RECEIVED_IN_OFJAVA); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("VersionMessageWrapper received"); + LOGGER.debug("<< {}", ByteBufUtils.byteBufToHexString(msg.getMessageBuffer())); + } - DataObject dataObject = null; try { - dataObject = deserializationFactory.deserialize(msg.getMessageBuffer(), + final DataObject dataObject = deserializationFactory.deserialize(msg.getMessageBuffer(), msg.getVersion()); - } catch(Exception e) { - LOGGER.error("Message deserialization failed"); - LOGGER.error(e.getMessage(), e); - return; - } - if (dataObject == null) { - LOGGER.warn("Translated POJO is null"); - return; + if (dataObject == null) { + LOGGER.warn("Translated POJO is null"); + statisticsCounter.incrementCounter(CounterEventTypes.US_DECODE_FAIL); + } else { + out.add(dataObject); + statisticsCounter.incrementCounter(CounterEventTypes.US_DECODE_SUCCESS); + } + } catch (Exception e) { + LOGGER.warn("Message deserialization failed", e); + statisticsCounter.incrementCounter(CounterEventTypes.US_DECODE_FAIL); + } finally { + msg.getMessageBuffer().release(); } - msg.getMessageBuffer().release(); - out.add(dataObject); } /**