fixing late hooking of request into deviceContext registry 35/18635/1
authorMartin Bobak <mbobak@cisco.com>
Mon, 20 Apr 2015 12:36:12 +0000 (14:36 +0200)
committerMartin Bobak <mbobak@cisco.com>
Mon, 20 Apr 2015 14:42:29 +0000 (16:42 +0200)
- added xid into requestCtx

Change-Id: I7944e966cbe9e136d3d0fcbee57649b0b40a3248
Signed-off-by: Martin Bobak <mbobak@cisco.com>
15 files changed:
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/CommonService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/OFJResult2RequestCtxFuture.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowTableStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightPortStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightQueueStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringService.java

index c0f651ce7b236e5dbaa0c6e663a53533693e256e..7ab9586fafd606efff0fcd8b814b324ae249693a 100644 (file)
@@ -82,9 +82,14 @@ public abstract class CommonService {
 
         final RequestContext<T> requestContext = requestContextStack.createRequestContext();
         final SettableFuture<RpcResult<T>> result = requestContextStack.storeOrFail(requestContext);
-        final DataCrate<T> dataCrate = DataCrateBuilder.<T>builder().setiDConnection(connectionID)
-                .setRequestContext(requestContext).build();
         if (!result.isDone()) {
+            final DataCrate<T> dataCrate = DataCrateBuilder.<T>builder().setiDConnection(connectionID)
+                    .setRequestContext(requestContext).build();
+            requestContext.setXid(deviceContext.getNextXid());
+
+            LOG.trace("Hooking xid {} to device context - precaution.", requestContext.getXid().getValue());
+            deviceContext.hookRequestCtx(requestContext.getXid(), requestContext);
+
             final ListenableFuture<RpcResult<F>> resultFromOFLib = function.apply(dataCrate);
 
             final OFJResult2RequestCtxFuture<T> OFJResult2RequestCtxFuture = new OFJResult2RequestCtxFuture<>(requestContext, deviceContext);
index f8be62458a204bff13dc435245e118668e23c20a..4899279ccb9329e0660ef91d139ccfa86fa0630f 100644 (file)
@@ -38,6 +38,9 @@ public class OFJResult2RequestCtxFuture<T> {
             @Override
             public void onSuccess(final RpcResult<F> fRpcResult) {
                 if (!fRpcResult.isSuccessful()) {
+                    // remove current request from request cache in deviceContext
+                    deviceContext.getRequests().remove(requestContext.getXid().getValue());
+                    // handle requestContext failure
                     StringBuilder rpcErrors = new StringBuilder();
                     if (null != fRpcResult.getErrors() && fRpcResult.getErrors().size() > 0) {
                         for (RpcError error : fRpcResult.getErrors()) {
@@ -48,9 +51,6 @@ public class OFJResult2RequestCtxFuture<T> {
                     requestContext.getFuture().set(
                             RpcResultBuilder.<T>failed().withRpcErrors(fRpcResult.getErrors()).build());
                     RequestContextUtil.closeRequstContext(requestContext);
-                } else {
-                    LOG.trace("Hooking xid {} to device context.", requestContext.getXid().getValue());
-                    deviceContext.hookRequestCtx(requestContext.getXid(), requestContext);
                 }
             }
 
index 4b3a9f39b63251bb0e15a85c87e5423ce6bea589..8ffed61df9bcb798b38e3613350e7829e5f98540 100644 (file)
@@ -37,8 +37,7 @@ public class PacketProcessingServiceImpl extends CommonService implements Packet
 
             @Override
             public ListenableFuture<RpcResult<Void>> apply(DataCrate<Void> data) {
-                final Xid xid = deviceContext.getNextXid();
-                data.getRequestContext().setXid(xid);
+                final Xid xid = data.getRequestContext().getXid();
                 final PacketOutInput message = PacketOutConvertor.toPacketOutInput(input, version, xid.getValue(),
                         datapathId);
 
index 8d11b8a60ef64f2b1c0c02a89c245b1e8e2e2f19..75d2755d60139cc1e7d45b0d679019d78966037e 100644 (file)
@@ -248,9 +248,8 @@ public class SalFlowServiceImpl extends CommonService implements SalFlowService
     }
 
     protected <T> ListenableFuture<RpcResult<Void>> createResultForFlowMod(final DataCrate<T> data, final FlowModInputBuilder flowModInput) {
-        final Xid xId = deviceContext.getNextXid();
-        flowModInput.setXid(xId.getValue());
-        data.getRequestContext().setXid(xId);
+        final Xid xid = data.getRequestContext().getXid();
+        flowModInput.setXid(xid.getValue());
         Future<RpcResult<Void>> flowModResult = provideConnectionAdapter(data.getiDConnection()).flowMod(
                 flowModInput.build());
         return JdkFutureAdapters.listenInPoolThread(flowModResult);
index 6660670df0e04886680dcad90d85c0793dece765..907ab2a51c53e7a5a97851e1cc9f66f464ae5a6b 100644 (file)
@@ -7,13 +7,13 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
-
-import com.google.common.base.Function;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupConvertor;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupOutput;
@@ -26,7 +26,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
-import java.util.concurrent.Future;
 
 public class SalGroupServiceImpl extends CommonService implements SalGroupService {
 
@@ -76,9 +75,8 @@ public class SalGroupServiceImpl extends CommonService implements SalGroupServic
 
     <T> ListenableFuture<RpcResult<Void>> convertAndSend(final Group iputGroup, final DataCrate<T> data) {
         final GroupModInputBuilder ofGroupModInput = GroupConvertor.toGroupModInput(iputGroup, version, datapathId);
-        final Xid xid = deviceContext.getNextXid();
+        final Xid xid = data.getRequestContext().getXid();
         ofGroupModInput.setXid(xid.getValue());
-        data.getRequestContext().setXid(xid);
         return JdkFutureAdapters.listenInPoolThread(provideConnectionAdapter(data.getiDConnection()).groupMod(ofGroupModInput.build()));
     }
 }
index b476fde970600b78b329aeff9a71d26c285f71f1..223778d3cfc06d19bc67c612ae8bd9b95f4d4932 100644 (file)
@@ -7,12 +7,13 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
-import com.google.common.base.Function;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterOutput;
@@ -25,7 +26,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInputBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
-import java.util.concurrent.Future;
 
 public class SalMeterServiceImpl extends CommonService implements SalMeterService {
 
@@ -72,9 +72,8 @@ public class SalMeterServiceImpl extends CommonService implements SalMeterServic
 
     <T> ListenableFuture<RpcResult<Void>> convertAndSend(final Meter iputMeter, final DataCrate<T> data) {
         final MeterModInputBuilder ofMeterModInput = MeterConvertor.toMeterModInput(iputMeter, version);
-        Xid xid = deviceContext.getNextXid();
+        final Xid xid = data.getRequestContext().getXid();
         ofMeterModInput.setXid(xid.getValue());
-        data.getRequestContext().setXid(xid);
         return JdkFutureAdapters.listenInPoolThread(provideConnectionAdapter(data.getiDConnection()).meterMod(ofMeterModInput.build()));
     }
 }
index 7b31308355b79338698b760f6c312288de6c8a1c..4a6b441dd138975a62e54ca955a272f6d60ae85e 100644 (file)
@@ -7,11 +7,11 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
-
-import com.google.common.base.Function;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.PortConvertor;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput;
@@ -21,7 +21,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.Upda
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortOutput;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
-import java.util.concurrent.Future;
 
 public class SalPortServiceImpl extends CommonService implements SalPortService {
     private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(SalPortServiceImpl.class);
@@ -35,9 +34,8 @@ public class SalPortServiceImpl extends CommonService implements SalPortService
                         final Port inputPort = input.getUpdatedPort().getPort().getPort().get(0);
                         final PortModInput ofPortModInput = PortConvertor.toPortModInput(inputPort, version);
                         final PortModInputBuilder mdInput = new PortModInputBuilder(ofPortModInput);
-                        Xid xid = deviceContext.getNextXid();
+                        final Xid xid = data.getRequestContext().getXid();
                         mdInput.setXid(xid.getValue());
-                        data.getRequestContext().setXid(xid);
                         return JdkFutureAdapters.listenInPoolThread(provideConnectionAdapter(data.getiDConnection()).portMod(mdInput.build()));
                     }
                 });
index 040d9fc8720c754d6f390db9e2f328cc7cba35cf..1a1bcb0e302eba4aac136f3a303e624c29539664 100644 (file)
@@ -7,15 +7,17 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
-import org.opendaylight.openflowplugin.api.openflow.device.Xid;
-
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import java.math.BigInteger;
+import java.util.List;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowplugin.api.OFConstants;
+import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.TableFeaturesConvertor;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;
@@ -32,9 +34,6 @@ import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
-import java.math.BigInteger;
-import java.util.List;
-import java.util.concurrent.Future;
 
 /**
  * @author joe
@@ -61,8 +60,7 @@ public class SalTableServiceImpl extends CommonService implements SalTableServic
                 caseBuilder.setMultipartRequestTableFeatures(requestBuilder.build());
 
                 // Set request body to main multipart request
-                final Xid xid = deviceContext.getNextXid();
-                data.getRequestContext().setXid(xid);
+                final Xid xid = data.getRequestContext().getXid();
                 final MultipartRequestInputBuilder mprInput = createMultipartHeader(MultipartType.OFPMPTABLEFEATURES,
                         xid.getValue());
                 mprInput.setMultipartRequestBody(caseBuilder.build());
index 341c844b5f124c88b990a5a198c8be44175d6a97..f6b57059a39f775eca4237c65be06902d1b1ddc1 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.impl.statistics.services;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
@@ -17,8 +18,8 @@ import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.impl.services.CommonService;
 import org.opendaylight.openflowplugin.impl.services.DataCrate;
-import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
 import org.opendaylight.openflowplugin.impl.services.OFJResult2RequestCtxFuture;
+import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchReactor;
 import org.opendaylight.openflowplugin.openflow.md.util.FlowCreatorUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput;
@@ -41,7 +42,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import java.util.concurrent.Future;
 
 /**
  * @author joe
@@ -80,8 +80,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
                         // Set request body to main multipart request
                         multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder
                                 .build());
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
 
@@ -131,8 +130,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
                         multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder
                                 .build());
 
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
 
@@ -166,8 +164,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
                         final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
                         multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
 
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPFLOW, xid.getValue(), version);
 
@@ -199,8 +196,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
                         mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
                         FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
 
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPFLOW, xid.getValue(), version);
 
@@ -257,9 +253,8 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
                                 deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
 
                         // Set request body to main multipart request
+                        final Xid xid = data.getRequestContext().getXid();
                         multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPFLOW, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
index 6fd321ff021543be8e8da050d32fe1f82fbc074f..fb8f24fe9f6e145ed5c0d9564b1574502bda6222 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.impl.statistics.services;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
@@ -24,7 +25,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table._case.MultipartRequestTableBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
-import java.util.concurrent.Future;
 
 /**
  * @author joe
@@ -54,8 +54,7 @@ public class OpendaylightFlowTableStatisticsServiceImpl extends CommonService im
                         multipartRequestTableCaseBuilder.setMultipartRequestTable(multipartRequestTableBuilder.build());
 
                         // Set request body to main multipart request
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPFLOW, xid.getValue(), version);
 
index 66822a0f2d31d6e68dcc9f6e9d63069c091d00e8..4462e360b5d1f392f0f15f6eb3679193c97feaeb 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.impl.statistics.services;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowjava.protocol.api.util.BinContent;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
@@ -34,7 +35,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupFeaturesCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.group._case.MultipartRequestGroupBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
-import java.util.concurrent.Future;
 
 /**
  * @author joe
@@ -65,8 +65,7 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
                         caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
 
                         // Create multipart request header
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPGROUP, xid.getValue(), version);
 
@@ -92,8 +91,7 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
                     public ListenableFuture<RpcResult<Void>> apply(final DataCrate<GetGroupDescriptionOutput> data) {
                         final MultipartRequestGroupDescCaseBuilder mprGroupDescCaseBuild = new MultipartRequestGroupDescCaseBuilder();
 
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPGROUPDESC, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(mprGroupDescCaseBuild.build());
@@ -114,8 +112,7 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
                     public ListenableFuture<RpcResult<Void>> apply(final DataCrate<GetGroupFeaturesOutput> data) {
                         final MultipartRequestGroupFeaturesCaseBuilder mprGroupFeaturesBuild = new MultipartRequestGroupFeaturesCaseBuilder();
 
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPGROUPFEATURES, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(mprGroupFeaturesBuild.build());
@@ -140,8 +137,7 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
                         mprGroupBuild.setGroupId(new GroupId(input.getGroupId().getValue()));
                         caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
 
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPGROUP, xid.getValue(), version);
 
index 3260000326ab0004eaaeabb3f1a12565aca5362f..8b6cbba779b97d926f29991434d9626b7b067a5b 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.impl.statistics.services;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowjava.protocol.api.util.BinContent;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
@@ -35,7 +36,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeterBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfigBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
-import java.util.concurrent.Future;
 
 /**
  * @author joe
@@ -66,8 +66,7 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
                                                 .types.rev130731.Meter.OFPMALL.getIntValue())));
                                 caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build());
 
-                                final Xid xid = deviceContext.getNextXid();
-                                data.getRequestContext().setXid(xid);
+                                final Xid xid = data.getRequestContext().getXid();
                                 MultipartRequestInputBuilder mprInput = RequestInputUtils
                                         .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), version);
                                 mprInput.setMultipartRequestBody(caseBuilder.build());
@@ -83,7 +82,6 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
     @Override
     public Future<RpcResult<GetAllMeterStatisticsOutput>> getAllMeterStatistics(final GetAllMeterStatisticsInput input) {
 
-        final long xid = deviceContext.getNextXid().getValue();
         return this.<GetAllMeterStatisticsOutput, Void>handleServiceCall(
                 PRIMARY_CONNECTION,
                 new Function<DataCrate<GetAllMeterStatisticsOutput>, ListenableFuture<RpcResult<Void>>>() {
@@ -99,8 +97,9 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
                                         .types.rev130731.Meter.OFPMALL.getIntValue())));
                         caseBuilder.setMultipartRequestMeter(mprMeterBuild.build());
 
+                        final Xid xid = data.getRequestContext().getXid();
                         MultipartRequestInputBuilder mprInput = RequestInputUtils
-                                .createMultipartHeader(MultipartType.OFPMPMETER, xid, version);
+                                .createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(caseBuilder.build());
                         Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
                                 .getConnectionAdapter().multipartRequest(mprInput.build());
@@ -114,7 +113,6 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
 
     @Override
     public Future<RpcResult<GetMeterFeaturesOutput>> getMeterFeatures(final GetMeterFeaturesInput input) {
-        final long xid = deviceContext.getNextXid().getValue();
         return this.<GetMeterFeaturesOutput, Void>handleServiceCall(
                 PRIMARY_CONNECTION,
                 new Function<DataCrate<GetMeterFeaturesOutput>, ListenableFuture<RpcResult<Void>>>() {
@@ -124,8 +122,9 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
                         MultipartRequestMeterFeaturesCaseBuilder mprMeterFeaturesBuild =
                                 new MultipartRequestMeterFeaturesCaseBuilder();
 
+                        final Xid xid = data.getRequestContext().getXid();
                         MultipartRequestInputBuilder mprInput =
-                                RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETERFEATURES, xid, version);
+                                RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETERFEATURES, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build());
                         Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
                         return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
@@ -135,7 +134,6 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
 
     @Override
     public Future<RpcResult<GetMeterStatisticsOutput>> getMeterStatistics(final GetMeterStatisticsInput input) {
-        final long xid = deviceContext.getNextXid().getValue();
         return this.<GetMeterStatisticsOutput, Void>handleServiceCall(
                 PRIMARY_CONNECTION,
                 new Function<DataCrate<GetMeterStatisticsOutput>, ListenableFuture<RpcResult<Void>>>() {
@@ -148,8 +146,9 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
                         mprMeterBuild.setMeterId(new MeterId(input.getMeterId().getValue()));
                         caseBuilder.setMultipartRequestMeter(mprMeterBuild.build());
 
+                        final Xid xid = data.getRequestContext().getXid();
                         MultipartRequestInputBuilder mprInput =
-                                RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETER, xid, version);
+                                RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(caseBuilder.build());
                         Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
                         return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
index 78759cfcf000be815ae232f5c97cbf7f5b7f57e3..2b8052ca5a32cf36d680056aa7eb3f9ff7702608 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.impl.statistics.services;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
@@ -29,7 +30,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.G
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetNodeConnectorStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.OpendaylightPortStatisticsService;
 import org.opendaylight.yangtools.yang.common.RpcResult;
-import java.util.concurrent.Future;
 
 /**
  * @author joe
@@ -58,8 +58,7 @@ public class OpendaylightPortStatisticsServiceImpl extends CommonService impleme
                                 mprPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY);
                                 caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
 
-                                final Xid xid = deviceContext.getNextXid();
-                                data.getRequestContext().setXid(xid);
+                                final Xid xid = data.getRequestContext().getXid();
                                 MultipartRequestInputBuilder mprInput = RequestInputUtils
                                         .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
                                 mprInput.setMultipartRequestBody(caseBuilder.build());
@@ -91,8 +90,7 @@ public class OpendaylightPortStatisticsServiceImpl extends CommonService impleme
                                                 input.getNodeConnectorId()));
                                 caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
 
-                                final Xid xid = deviceContext.getNextXid();
-                                data.getRequestContext().setXid(xid);
+                                final Xid xid = data.getRequestContext().getXid();
                                 MultipartRequestInputBuilder mprInput = RequestInputUtils
                                         .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
                                 mprInput.setMultipartRequestBody(caseBuilder.build());
index 9d5c67c837bd3caae8b2b0c4625b4ef2f6a0d67f..337161b3a5ac3bf8ec6ad781468fa405c026f035 100644 (file)
@@ -61,8 +61,7 @@ public class OpendaylightQueueStatisticsServiceImpl extends CommonService implem
                         caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
 
                         // Set request body to main multipart request
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPQUEUE, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(caseBuilder.build());
@@ -93,8 +92,7 @@ public class OpendaylightQueueStatisticsServiceImpl extends CommonService implem
                         caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
 
                         // Set request body to main multipart request
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPQUEUE, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(caseBuilder.build());
@@ -125,8 +123,7 @@ public class OpendaylightQueueStatisticsServiceImpl extends CommonService implem
                         caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
 
                         // Set request body to main multipart request
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
                         MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPQUEUE, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(caseBuilder.build());
index b06d99e0855c7009041f51b26c0ee0c0b63b30c9..57f69befd51703ee4abf3d4c58dcf8d062c95bc9 100644 (file)
@@ -46,8 +46,8 @@ public class StatisticsGatheringService extends CommonService {
                     public ListenableFuture<RpcResult<Void>> apply(final DataCrate<List<MultipartReply>> data) {
 
                         LOG.info("Calling multipart request for type {}", type);
-                        final Xid xid = deviceContext.getNextXid();
-                        data.getRequestContext().setXid(xid);
+                        final Xid xid = data.getRequestContext().getXid();
+
                         deviceContext.getOpenflowMessageListenerFacade().registerMultipartXid(xid.getValue());
                         MultipartRequestInput multipartRequestInput = MultipartRequestInputFactory.
                                 makeMultipartRequestInput(xid.getValue(),