*/
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
}
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public MeterModInput deserialize(ByteBuf rawMessage) {
- MeterModInputBuilder builder = new MeterModInputBuilder();
- builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
- builder.setXid(rawMessage.readUnsignedInt());
- builder.setCommand(MeterModCommand.forValue(rawMessage.readUnsignedShort()));
- builder.setFlags(createMeterFlags(rawMessage.readUnsignedShort()));
- builder.setMeterId(new MeterId(rawMessage.readUnsignedInt()));
+ Objects.requireNonNull(registry);
+
+ MeterModInputBuilder builder = new MeterModInputBuilder()
+ .setVersion(EncodeConstants.OF_VERSION_1_3)
+ .setXid(readUint32(rawMessage))
+ .setCommand(MeterModCommand.forValue(rawMessage.readUnsignedShort()))
+ .setFlags(createMeterFlags(rawMessage.readUnsignedShort()))
+ .setMeterId(new MeterId(readUint32(rawMessage)));
List<Bands> bandsList = new ArrayList<>();
while (rawMessage.readableBytes() > 0) {
BandsBuilder bandsBuilder = new BandsBuilder();
MeterBandDropBuilder bandDropBuilder = new MeterBandDropBuilder();
bandDropBuilder.setType(MeterBandType.forValue(bandType));
rawMessage.readUnsignedShort();
- bandDropBuilder.setRate(rawMessage.readUnsignedInt());
- bandDropBuilder.setBurstSize(rawMessage.readUnsignedInt());
+ bandDropBuilder.setRate(readUint32(rawMessage));
+ bandDropBuilder.setBurstSize(readUint32(rawMessage));
rawMessage.skipBytes(PADDING_IN_METER_BAND_DROP_HEADER);
bandDropCaseBuilder.setMeterBandDrop(bandDropBuilder.build());
bandsBuilder.setMeterBand(bandDropCaseBuilder.build());
MeterBandDscpRemarkBuilder bandDscpRemarkBuilder = new MeterBandDscpRemarkBuilder();
bandDscpRemarkBuilder.setType(MeterBandType.forValue(bandType));
rawMessage.readUnsignedShort();
- bandDscpRemarkBuilder.setRate(rawMessage.readUnsignedInt());
- bandDscpRemarkBuilder.setBurstSize(rawMessage.readUnsignedInt());
- bandDscpRemarkBuilder.setPrecLevel(rawMessage.readUnsignedByte());
+ bandDscpRemarkBuilder.setRate(readUint32(rawMessage));
+ bandDscpRemarkBuilder.setBurstSize(readUint32(rawMessage));
+ bandDscpRemarkBuilder.setPrecLevel(readUint8(rawMessage));
rawMessage.skipBytes(PADDING_IN_METER_BAND_DSCP_HEADER);
bandDscpRemarkCaseBuilder.setMeterBandDscpRemark(bandDscpRemarkBuilder.build());
bandsBuilder.setMeterBand(bandDscpRemarkCaseBuilder.build());
break;
case 0xFFFF:
- long expId = rawMessage.getUnsignedInt(rawMessage.readerIndex()
- + 2 * EncodeConstants.SIZE_OF_INT_IN_BYTES);
+ long expId = rawMessage.getUnsignedInt(rawMessage.readerIndex() + 2 * Integer.BYTES);
rawMessage.readerIndex(bandStartIndex);
OFDeserializer<MeterBandExperimenterCase> deserializer = registry
.getDeserializer(ExperimenterDeserializerKeyFactory
final Boolean mfSTATS = (input & 1 << 3) != 0;
return new MeterFlags(mfBURST, mfKBPS, mfPKTPS, mfSTATS);
}
-
}