X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflow-protocol-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowjava%2Fprotocol%2Fimpl%2Fserialization%2Ffactories%2FOF10StatsRequestInputFactory.java;h=840b9966a70e3cedf7adc76a76133532ac1b3de1;hb=d58ee5d9fb3dffc8bf395d2e29342dd5e16c9932;hp=cb3eee8bf937860a994a82c96efbfbefc7980481;hpb=79dba1331fc464a3fc6da4623d8ac1807152db4b;p=openflowjava.git diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java index cb3eee8b..840b9966 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java @@ -10,17 +10,13 @@ package org.opendaylight.openflowjava.protocol.impl.serialization.factories; import io.netty.buffer.ByteBuf; -import java.util.HashMap; -import java.util.Map; - import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; -import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; -import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; +import org.opendaylight.openflowjava.util.ByteBufUtils; +import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.v10.grouping.MatchV10; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.MultipartRequestBody; @@ -44,11 +40,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 public class OF10StatsRequestInputFactory implements OFSerializer, SerializerRegistryInjector { private static final byte MESSAGE_TYPE = 16; - private static final byte FLOW_BODY_LENGTH = 44; - private static final byte AGGREGATE_BODY_LENGTH = 44; - private static final byte PORT_STATS_BODY_LENGTH = 8; - private static final byte QUEUE_BODY_LENGTH = 8; - private static final byte EXPERIMENTER_BODY_LENGTH = 4; private static final byte PADDING_IN_MULTIPART_REQUEST_FLOW_BODY = 1; private static final byte PADDING_IN_MULTIPART_REQUEST_AGGREGATE_BODY = 1; private static final byte PADDING_IN_MULTIPART_REQUEST_PORT_BODY = 6; @@ -57,7 +48,7 @@ public class OF10StatsRequestInputFactory implements OFSerializer multipartRequestFlagsMap = new HashMap<>(); - multipartRequestFlagsMap.put(0, flags.isOFPMPFREQMORE()); - multipartRequestFlagsBitmask = ByteBufUtils.fillBitMaskFromMap(multipartRequestFlagsMap); - return multipartRequestFlagsBitmask; + private static int createMultipartRequestFlagsBitmask(final MultipartRequestFlags flags) { + return ByteBufUtils.fillBitMask(0, flags.isOFPMPFREQMORE()); } - + /** - * @param multipartRequestBody - * @param output + * @param multipartRequestBody + * @param output */ - private void serializeDescBody(MultipartRequestBody multipartRequestBody, - ByteBuf output) { + private void serializeDescBody(final MultipartRequestBody multipartRequestBody, + final ByteBuf output) { // The body of MultiPartRequestDesc is empty } @@ -127,58 +87,59 @@ public class OF10StatsRequestInputFactory implements OFSerializer matchSerializer = registry.getSerializer(new MessageTypeKey<>( EncodeConstants.OF10_VERSION_ID, MatchV10.class)); matchSerializer.serialize(flow.getMatchV10(), output); output.writeByte(flow.getTableId().shortValue()); - ByteBufUtils.padBuffer(PADDING_IN_MULTIPART_REQUEST_FLOW_BODY, output); + output.writeZero(PADDING_IN_MULTIPART_REQUEST_FLOW_BODY); output.writeShort(flow.getOutPort().intValue()); } - - private void serializeAggregateBody(MultipartRequestBody multipartRequestBody, ByteBuf output) { + + private void serializeAggregateBody(final MultipartRequestBody multipartRequestBody, final ByteBuf output) { MultipartRequestAggregateCase aggregateCase = (MultipartRequestAggregateCase) multipartRequestBody; MultipartRequestAggregate aggregate = aggregateCase.getMultipartRequestAggregate(); OFSerializer matchSerializer = registry.getSerializer(new MessageTypeKey<>( EncodeConstants.OF10_VERSION_ID, MatchV10.class)); matchSerializer.serialize(aggregate.getMatchV10(), output); output.writeByte(aggregate.getTableId().shortValue()); - ByteBufUtils.padBuffer(PADDING_IN_MULTIPART_REQUEST_AGGREGATE_BODY, output); + output.writeZero(PADDING_IN_MULTIPART_REQUEST_AGGREGATE_BODY); output.writeShort(aggregate.getOutPort().intValue()); } - private static void serializePortBody(MultipartRequestBody multipartRequestBody, ByteBuf output) { + private static void serializePortBody(final MultipartRequestBody multipartRequestBody, final ByteBuf output) { MultipartRequestPortStatsCase portstatsCase = (MultipartRequestPortStatsCase) multipartRequestBody; MultipartRequestPortStats portstats = portstatsCase.getMultipartRequestPortStats(); output.writeShort(portstats.getPortNo().intValue()); - ByteBufUtils.padBuffer(PADDING_IN_MULTIPART_REQUEST_PORT_BODY, output); + output.writeZero(PADDING_IN_MULTIPART_REQUEST_PORT_BODY); } - - private static void serializeQueueBody(MultipartRequestBody multipartRequestBody, ByteBuf output) { + + private static void serializeQueueBody(final MultipartRequestBody multipartRequestBody, final ByteBuf output) { MultipartRequestQueueCase queueCase = (MultipartRequestQueueCase) multipartRequestBody; MultipartRequestQueue queue = queueCase.getMultipartRequestQueue(); output.writeShort(queue.getPortNo().intValue()); - ByteBufUtils.padBuffer(PADING_IN_QUEUE_BODY, output); + output.writeZero(PADING_IN_QUEUE_BODY); output.writeInt(queue.getQueueId().intValue()); } - - private static void serializeExperimenterBody(MultipartRequestBody multipartRequestBody, ByteBuf output) { + + private void serializeExperimenterBody(final MultipartRequestBody multipartRequestBody, final ByteBuf output) { MultipartRequestExperimenterCase experimenterCase = (MultipartRequestExperimenterCase) multipartRequestBody; MultipartRequestExperimenter experimenter = experimenterCase.getMultipartRequestExperimenter(); - output.writeInt(experimenter.getExperimenter().intValue()); - output.writeBytes(experimenter.getData()); + OFSerializer expSerializer = registry.getSerializer( + new MessageTypeKey<>(EncodeConstants.OF10_VERSION_ID, MultipartRequestExperimenter.class)); + expSerializer.serialize(experimenter, output); } @Override - public void injectSerializerRegistry(SerializerRegistry serializerRegistry) { + public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) { this.registry = serializerRegistry; } - + }