import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
import org.opendaylight.openflowjava.protocol.impl.util.ActionsDeserializer;\r
import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
+import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;\r
import org.opendaylight.openflowjava.protocol.impl.util.InstructionsDeserializer;\r
import org.opendaylight.openflowjava.protocol.impl.util.MatchDeserializer;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table.features.TableFeaturesBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.TableFeatureProperties;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.TableFeaturePropertiesBuilder;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
\r
/**\r
* Translates MultipartReply messages\r
*/\r
public class MultipartReplyMessageFactory implements OFDeserializer<MultipartReplyMessage> {\r
\r
- private static final Logger LOGGER = LoggerFactory\r
- .getLogger(MultipartReplyMessageFactory.class);\r
private static final byte PADDING_IN_MULTIPART_REPLY_HEADER = 4;\r
+ private static final int DESC_STR_LEN = 256;\r
+ private static final int SERIAL_NUM_LEN = 32;\r
+ private static final byte PADDING_IN_FLOW_STATS_HEADER_01 = 1;\r
+ private static final byte PADDING_IN_FLOW_STATS_HEADER_02 = 4;\r
+ private static final byte PADDING_IN_AGGREGATE_HEADER = 4;\r
+ private static final byte PADDING_IN_TABLE_HEADER = 3;\r
+ private static final byte PADDING_IN_MULTIPART_REPLY_TABLE_FEATURES = 5;\r
+ private static final byte MAX_TABLE_NAME_LENGTH = 32;\r
+ private static final byte MULTIPART_REPLY_TABLE_FEATURES_STRUCTURE_LENGTH = 64;\r
+ private static final byte COMMON_PROPERTY_LENGTH = 4;\r
+ private static final byte PADDING_IN_PORT_STATS_HEADER = 4;\r
+ private static final byte PADDING_IN_GROUP_HEADER_01 = 2;\r
+ private static final byte PADDING_IN_GROUP_HEADER_02 = 4;\r
+ private static final byte BUCKET_COUNTER_LENGTH = 16;\r
+ private static final byte GROUP_BODY_LENGTH = 40;\r
+ private static final byte PADDING_IN_METER_FEATURES_HEADER = 2;\r
+ private static final byte PADDING_IN_METER_STATS_HEADER = 6;\r
+ private static final byte METER_BAND_STATS_LENGTH = 16;\r
+ private static final byte METER_BODY_LENGTH = 40;\r
+ private static final byte METER_CONFIG_LENGTH = 8;\r
+ private static final byte PADDING_IN_METER_BAND_DROP_HEADER = 4;\r
+ private static final byte PADDING_IN_METER_BAND_DSCP_HEADER = 3;\r
+ private static final byte PADDING_IN_PORT_DESC_HEADER_01 = 4;\r
+ private static final byte PADDING_IN_PORT_DESC_HEADER_02 = 2;\r
+ private static final byte MAX_PORT_NAME_LEN = 16;\r
+ private static final int GROUP_TYPES = 4;\r
+ private static final byte PADDING_IN_GROUP_DESC_HEADER = 1;\r
+ private static final byte PADDING_IN_BUCKETS_HEADER = 4;\r
+ private static final byte GROUP_DESC_HEADER_LENGTH = 8;\r
+ private static final byte BUCKETS_HEADER_LENGTH = 16;\r
+\r
\r
private static MultipartReplyMessageFactory instance;\r
\r
}\r
\r
private static MultipartReplyDesc setDesc(ByteBuf input) {\r
- final int DESC_STR_LEN = 256;\r
- final int SERIAL_NUM_LEN = 32;\r
MultipartReplyDescBuilder descBuilder = new MultipartReplyDescBuilder();\r
byte[] mfrDescBytes = new byte[DESC_STR_LEN];\r
input.readBytes(mfrDescBytes);\r
}\r
\r
private static MultipartReplyFlow setFlow(ByteBuf input) {\r
- final byte PADDING_IN_FLOW_STATS_HEADER_01 = 1;\r
- final byte PADDING_IN_FLOW_STATS_HEADER_02 = 4;\r
MultipartReplyFlowBuilder flowBuilder = new MultipartReplyFlowBuilder();\r
List<FlowStats> flowStatsList = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
FlowStatsBuilder flowStatsBuilder = new FlowStatsBuilder();\r
- input.skipBytes(Short.SIZE / Byte.SIZE);\r
+ input.skipBytes(EncodeConstants.SIZE_OF_SHORT_IN_BYTES);\r
flowStatsBuilder.setTableId(input.readUnsignedByte());\r
input.skipBytes(PADDING_IN_FLOW_STATS_HEADER_01);\r
flowStatsBuilder.setDurationSec(input.readUnsignedInt());\r
}\r
\r
private static MultipartReplyAggregate setAggregate(ByteBuf input) {\r
- final byte PADDING_IN_AGGREGATE_HEADER = 4;\r
MultipartReplyAggregateBuilder builder = new MultipartReplyAggregateBuilder();\r
byte[] packetCount = new byte[Long.SIZE/Byte.SIZE];\r
input.readBytes(packetCount);\r
}\r
\r
private static MultipartReplyTable setTable(ByteBuf input) {\r
- final byte PADDING_IN_TABLE_HEADER = 3;\r
MultipartReplyTableBuilder builder = new MultipartReplyTableBuilder();\r
List<TableStats> tableStatsList = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
}\r
\r
private static MultipartReplyTableFeatures setTableFeatures(ByteBuf input) {\r
- final byte PADDING_IN_MULTIPART_REPLY_TABLE_FEATURES = 5;\r
- final byte MAX_TABLE_NAME_LENGTH = 32;\r
- final byte MULTIPART_REPLY_TABLE_FEATURES_STRUCTURE_LENGTH = 64;\r
MultipartReplyTableFeaturesBuilder builder = new MultipartReplyTableFeaturesBuilder();\r
List<TableFeatures> features = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
featuresBuilder.setTableId(input.readUnsignedByte());\r
input.skipBytes(PADDING_IN_MULTIPART_REPLY_TABLE_FEATURES);\r
featuresBuilder.setName(input.readBytes(MAX_TABLE_NAME_LENGTH).toString());\r
- byte[] metadataMatch = new byte[Long.SIZE / Byte.SIZE];\r
+ byte[] metadataMatch = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];\r
input.readBytes(metadataMatch);\r
featuresBuilder.setMetadataMatch(metadataMatch);\r
- byte[] metadataWrite = new byte[Long.SIZE / Byte.SIZE];\r
+ byte[] metadataWrite = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];\r
input.readBytes(metadataWrite);\r
featuresBuilder.setMetadataWrite(metadataWrite);\r
featuresBuilder.setConfig(createTableConfig(input.readUnsignedInt()));\r
}\r
\r
private static List<TableFeatureProperties> createTableFeaturesProperties(ByteBuf input, int length) {\r
- final byte COMMON_PROPERTY_LENGTH = 4;\r
List<TableFeatureProperties> properties = new ArrayList<>();\r
int tableFeaturesLength = length;\r
while (tableFeaturesLength > 0) {\r
}\r
\r
private static MultipartReplyPortStats setPortStats(ByteBuf input) {\r
- final byte PADDING_IN_PORT_STATS_HEADER = 4;\r
MultipartReplyPortStatsBuilder builder = new MultipartReplyPortStatsBuilder();\r
List<PortStats> portStatsList = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
}\r
\r
private static MultipartReplyGroup setGroup(ByteBuf input) {\r
- final byte PADDING_IN_GROUP_HEADER_01 = 2;\r
- final byte PADDING_IN_GROUP_HEADER_02 = 4;\r
- final byte BUCKET_COUNTER_LENGTH = 16;\r
- final byte GROUP_BODY_LENGTH = 40;\r
MultipartReplyGroupBuilder builder = new MultipartReplyGroupBuilder();\r
List<GroupStats> groupStatsList = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
}\r
\r
private static MultipartReplyMeterFeatures setMeterFeatures(ByteBuf input) {\r
- final byte PADDING_IN_METER_FEATURES_HEADER = 2;\r
MultipartReplyMeterFeaturesBuilder builder = new MultipartReplyMeterFeaturesBuilder();\r
builder.setMaxMeter(input.readUnsignedInt());\r
builder.setBandTypes(createMeterBandsBitmap(input.readUnsignedInt()));\r
}\r
\r
private static MultipartReplyMeter setMeter(ByteBuf input) {\r
- final byte PADDING_IN_METER_STATS_HEADER = 6;\r
- final byte METER_BAND_STATS_LENGTH = 16;\r
- final byte METER_BODY_LENGTH = 40;\r
MultipartReplyMeterBuilder builder = new MultipartReplyMeterBuilder();\r
List<MeterStats> meterStatsList = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
}\r
\r
private static MultipartReplyMeterConfig setMeterConfig(ByteBuf input) {\r
- final byte METER_CONFIG_LENGTH = 8;\r
- final byte PADDING_IN_METER_BAND_DROP_HEADER = 4;\r
- final byte PADDING_IN_METER_BAND_DSCP_HEADER = 3;\r
MultipartReplyMeterConfigBuilder builder = new MultipartReplyMeterConfigBuilder();\r
List<MeterConfig> meterConfigList = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
}\r
\r
private static MultipartReplyPortDesc setPortDesc(ByteBuf input) {\r
- final byte PADDING_IN_PORT_DESC_HEADER_01 = 4;\r
- final byte PADDING_IN_PORT_DESC_HEADER_02 = 2;\r
- final int MAC_ADDRESS_LENGTH = 6;\r
- final byte MAX_PORT_NAME_LEN = 16;\r
MultipartReplyPortDescBuilder builder = new MultipartReplyPortDescBuilder();\r
List<Ports> portsList = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
PortsBuilder portsBuilder = new PortsBuilder();\r
portsBuilder.setPortNo(input.readUnsignedInt());\r
input.skipBytes(PADDING_IN_PORT_DESC_HEADER_01);\r
- byte[] hwAddress = new byte[MAC_ADDRESS_LENGTH];\r
+ byte[] hwAddress = new byte[EncodeConstants.MAC_ADDRESS_LENGTH];\r
input.readBytes(hwAddress);\r
portsBuilder.setHwAddr(new MacAddress(ByteBufUtils.macAddressToString(hwAddress)));\r
input.skipBytes(PADDING_IN_PORT_DESC_HEADER_02);\r
}\r
\r
private static MultipartReplyBody setGroupFeatures(ByteBuf rawMessage) {\r
- final int GROUP_TYPES = 4;\r
MultipartReplyGroupFeaturesBuilder featuresBuilder = new MultipartReplyGroupFeaturesBuilder();\r
featuresBuilder.setTypes(createGroupType(rawMessage.readUnsignedInt()));\r
featuresBuilder.setCapabilities(createCapabilities(rawMessage.readUnsignedInt()));\r
}\r
\r
private static MultipartReplyGroupDesc setGroupDesc(ByteBuf input) {\r
- final byte PADDING_IN_GROUP_DESC_HEADER = 1;\r
- final byte PADDING_IN_BUCKETS_HEADER = 4;\r
- final byte GROUP_DESC_HEADER_LENGTH = 8;\r
- final byte BUCKETS_HEADER_LENGTH = 16;\r
MultipartReplyGroupDescBuilder builder = new MultipartReplyGroupDescBuilder();\r
List<GroupDesc> groupDescsList = new ArrayList<>();\r
- LOGGER.info("readablebytes pred: " + input.readableBytes());\r
while (input.readableBytes() > 0) {\r
- LOGGER.info("readablebytes po: " + input.readableBytes());\r
GroupDescBuilder groupDescBuilder = new GroupDescBuilder();\r
int bodyLength = input.readUnsignedShort();\r
- LOGGER.info("bodylength: " + bodyLength);\r
groupDescBuilder.setType(GroupType.forValue(input.readUnsignedByte()));\r
input.skipBytes(PADDING_IN_GROUP_DESC_HEADER);\r
groupDescBuilder.setGroupId(input.readUnsignedInt());\r
int actualLength = GROUP_DESC_HEADER_LENGTH;\r
List<BucketsList> bucketsList = new ArrayList<>();\r
while (actualLength < bodyLength) {\r
- System.out.println("cyklim v buckets");\r
BucketsListBuilder bucketsBuilder = new BucketsListBuilder();\r
int bucketsLength = input.readUnsignedShort();\r
bucketsBuilder.setWeight(input.readUnsignedShort());\r
bucketsBuilder.setWatchPort(new PortNumber(input.readUnsignedInt()));\r
bucketsBuilder.setWatchGroup(input.readUnsignedInt());\r
input.skipBytes(PADDING_IN_BUCKETS_HEADER);\r
- System.out.println("bucketslength: " + bucketsLength);\r
- System.out.println("actuallength: " + actualLength);\r
- System.out.println("bodylength: " + bodyLength);\r
- LOGGER.info("length - length: " + (bucketsLength - BUCKETS_HEADER_LENGTH));\r
List<ActionsList> actionsList = ActionsDeserializer\r
.createActionsList(input, bucketsLength - BUCKETS_HEADER_LENGTH);\r
- LOGGER.info("actions size: " + actionsList.size());\r
bucketsBuilder.setActionsList(actionsList);\r
bucketsList.add(bucketsBuilder.build());\r
actualLength += bucketsLength;\r