Fix Logger use
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / core / OFDecoder.java
index ee5780463ef5c28d16b7e600c21dc510c68191d6..de419f8b005e8d82e8507498ae9c5c525b797eee 100644 (file)
@@ -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<VersionMessageWrapper> {
 
     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<VersionMessageWrapper> {
      */
     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<Object> 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);
     }
 
     /**