- encodeExperimenterBody(message.getMultipartRequestBody(), out);
- }
- }
-
- @Override
- public int computeLength(MultipartRequestInput message) {
- return MESSAGE_LENGTH + computeBodyLength(message);
- }
- @Override
- public byte getMessageType() {
- return MESSAGE_TYPE;
- }
-
- /**
- *
- * @param message
- * @return length of MultipartRequestMessage
- */
- public int computeBodyLength(MultipartRequestInput message) {
- int length = 0;
- MultipartType type = message.getType();
- if (type.equals(MultipartType.OFPMPFLOW)) {
- MultipartRequestFlowCase bodyCase = (MultipartRequestFlowCase) message.getMultipartRequestBody();
- MultipartRequestFlow body = bodyCase.getMultipartRequestFlow();
- length += FLOW_BODY_LENGTH + MatchSerializer.computeMatchLength(body.getMatch());
- } else if (type.equals(MultipartType.OFPMPAGGREGATE)) {
- MultipartRequestAggregateCase bodyCase = (MultipartRequestAggregateCase) message.getMultipartRequestBody();
- MultipartRequestAggregate body = bodyCase.getMultipartRequestAggregate();
- length += AGGREGATE_BODY_LENGTH + MatchSerializer.computeMatchLength(body.getMatch());
- } else if (type.equals(MultipartType.OFPMPPORTSTATS)) {
- length += PORT_STATS_BODY_LENGTH;
- } else if (type.equals(MultipartType.OFPMPQUEUE)) {
- length += QUEUE_BODY_LENGTH;
- } else if (type.equals(MultipartType.OFPMPGROUP)) {
- length += GROUP_BODY_LENGTH;
- } else if (type.equals(MultipartType.OFPMPMETER)) {
- length += METER_BODY_LENGTH;
- } else if (type.equals(MultipartType.OFPMPMETERCONFIG)) {
- length += METER_CONFIG_BODY_LENGTH;
- } else if (type.equals(MultipartType.OFPMPTABLEFEATURES)) {
- MultipartRequestTableFeaturesCase bodyCase = (MultipartRequestTableFeaturesCase) message.getMultipartRequestBody();
- MultipartRequestTableFeatures body = bodyCase.getMultipartRequestTableFeatures();
- length += computeTableFeaturesLength(body);
- } else if (type.equals(MultipartType.OFPMPEXPERIMENTER)) {
- MultipartRequestExperimenterCase bodyCase = (MultipartRequestExperimenterCase) message.getMultipartRequestBody();
- MultipartRequestExperimenter body = bodyCase.getMultipartRequestExperimenter();
- length += EXPERIMENTER_BODY_LENGTH;
- if (body.getData() != null) {
- length += body.getData().length;
- }
- }
- return length;
- }
-
- private static int computeTableFeaturesLength(MultipartRequestTableFeatures body) {
- int length = 0;
- if (body != null && body.getTableFeatures() != null) {
- List<TableFeatures> tableFeatures = body.getTableFeatures();
- for (TableFeatures feature : tableFeatures) {
- length += computeSingleTableFeatureLength(feature);
- }