- long expId = experimenterBand.getAugmentation(ExperimenterIdMeterBand.class)
- .getExperimenter().getValue();
- OFSerializer<MeterBandExperimenterCase> serializer = registry.getSerializer(
- ExperimenterSerializerKeyFactory.createMeterBandSerializerKey(
- EncodeConstants.OF13_VERSION_ID, expId));
- serializer.serialize(experimenterBandCase, outBuffer);
+ ExperimenterIdMeterBand expIdMeterBand = experimenterBand.getAugmentation(ExperimenterIdMeterBand.class);
+ if (expIdMeterBand != null) {
+ long expId = expIdMeterBand.getExperimenter().getValue();
+ Class<? extends ExperimenterMeterBandSubType> meterBandSubType = expIdMeterBand.getSubType();
+ try {
+ OFSerializer<MeterBandExperimenterCase> serializer = registry.getSerializer(
+ ExperimenterSerializerKeyFactory.createMeterBandSerializerKey(
+ EncodeConstants.OF13_VERSION_ID, expId, meterBandSubType));
+ serializer.serialize(experimenterBandCase, outBuffer);
+ } catch (final IllegalStateException e) {
+ LOG.warn("Serializer for key: {} wasn't found, exception {}", ExperimenterSerializerKeyFactory.createMeterBandSerializerKey(
+ EncodeConstants.OF13_VERSION_ID, expId, meterBandSubType), e);
+ }
+ }