import java.util.List;
import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory;
+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;
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;
/**
*/
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 {
+ statisticsCounter.incrementCounter(CounterEventTypes.US_RECEIVED_IN_OFJAVA);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("VersionMessageWrapper received");
- LOGGER.debug("<< " + ByteBufUtils.byteBufToHexString(msg.getMessageBuffer()));
+ 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);
}
/**