- GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput arg0) {
-
- // Generate xid to associate it with the request
- Long xid = this.getSessionContext().getNextXid();
-
- LOG.debug(
- "Prepare aggregate statistics request to get aggregate stats for flows matching {} and installed in flow tables {} - Transaction id - {}",
- arg0.getMatch().toString(), arg0.getTableId(), xid);
-
- // Create multipart request header
- MultipartRequestInputBuilder mprInput = new MultipartRequestInputBuilder();
- mprInput.setType(MultipartType.OFPMPAGGREGATE);
- mprInput.setVersion(version);
- mprInput.setXid(xid);
- mprInput.setFlags(new MultipartRequestFlags(false));
-
- // Create multipart request body for fetch all the group stats
- MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
- MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
- mprAggregateRequestBuilder.setTableId(arg0.getTableId());
- mprAggregateRequestBuilder.setOutPort(arg0.getOutPort().longValue());
- mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
- mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
- mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
-
- MatchReactor.getInstance().convert(arg0.getMatch(), version, mprAggregateRequestBuilder,
- this.getSessionContext().getFeatures().getDatapathId());
- // TODO: repeating code
- if (version == OFConstants.OFP_VERSION_1_3) {
- mprAggregateRequestBuilder.setCookie(arg0.getCookie().getValue());
- mprAggregateRequestBuilder.setCookieMask(arg0.getCookieMask().getValue());
- mprAggregateRequestBuilder.setOutGroup(arg0.getOutGroup());
- }
-
- // Set request body to main multipart request
- multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build());
- mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
-
- // Send the request, no cookies associated, use any connection
- LOG.debug("Send request to the switch :{}", multipartRequestAggregateCaseBuilder.build().toString());
- this.messageService.multipartRequest(mprInput.build(), null);
-
- // Prepare rpc return output. Set xid and send it back.
- GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder output = new GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder();
- output.setTransactionId(generateTransactionId(xid));