shift statistics services to new OFJ codepath 34/20634/1
authorMartin Bobak <mbobak@cisco.com>
Mon, 18 May 2015 09:12:56 +0000 (11:12 +0200)
committerMartin Bobak <mbobak@cisco.com>
Mon, 18 May 2015 09:55:08 +0000 (11:55 +0200)
Change-Id: Id3fa22878605029989baabbc5722394fa3e92728
Signed-off-by: Martin Bobak <mbobak@cisco.com>
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/util/StatisticsServiceUtil.java [new file with mode: 0644]

index 456d39d6d22e081882fe994ae8f4dac60e86efb2..8cc3b22d01d3ea16f88b22a6c3e4020c13ce542c 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.openflowplugin.impl.statistics.services;
 import com.google.common.base.Function;
 import com.google.common.base.MoreObjects;
 import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.List;
@@ -26,6 +25,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey;
 import org.opendaylight.openflowplugin.impl.services.CommonService;
 import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
+import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil;
 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;
@@ -96,10 +96,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
 
                         mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
 
-                        final Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, mprInput.build(), getDeviceContext());
                     }
                 });
 
@@ -161,9 +158,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
                                 MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
 
                         mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
-                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, mprInput.build(), getDeviceContext());
                     }
                 });
 
@@ -232,9 +227,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
                         MultipartType.OFPMPFLOW, xid.getValue(), version);
 
                 mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
-                final Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                        .getConnectionAdapter().multipartRequest(mprInput.build());
-                return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, mprInput.build(), getDeviceContext());
             }
         });
     }
@@ -265,9 +258,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
 
                 multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
                 mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
-                final Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                        .getConnectionAdapter().multipartRequest(mprInput.build());
-                return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, mprInput.build(), getDeviceContext());
             }
         });
     }
@@ -322,9 +313,7 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
                 final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                         MultipartType.OFPMPFLOW, xid.getValue(), version);
                 mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
-                final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                        .getConnectionAdapter().multipartRequest(mprInput.build());
-                return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, mprInput.build(), getDeviceContext());
             }
         });
     }
index 31af26932391276794f1a85c5488e40eed3026a6..410c44f0348a1d2a8224d89927d2c11ee2e6c975 100644 (file)
@@ -8,7 +8,6 @@
 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;
@@ -17,6 +16,7 @@ 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.RequestInputUtils;
+import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.OpendaylightFlowTableStatisticsService;
@@ -58,10 +58,7 @@ public class OpendaylightFlowTableStatisticsServiceImpl extends CommonService im
                         MultipartType.OFPMPFLOW, xid.getValue(), getVersion());
 
                 mprInput.setMultipartRequestBody(multipartRequestTableCaseBuilder.build());
-                final Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                        .getConnectionAdapter().multipartRequest(mprInput.build());
-
-                return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, mprInput.build(), getDeviceContext());
             }
         });
     }
index da7f167442eb1f1b7df390aabf0d38b4c25f924e..9062b46b41b038a616373889f736af6f1ac64435 100644 (file)
@@ -8,7 +8,6 @@
 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;
@@ -18,6 +17,7 @@ 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.RequestInputUtils;
+import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupDescriptionInput;
@@ -29,6 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.OpendaylightGroupStatisticsService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDescCaseBuilder;
@@ -73,14 +74,15 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
 
                 // Send the request, no cookies associated, use any connection
 
-                final Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                        .getConnectionAdapter().multipartRequest(mprInput.build());
-                return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                MultipartRequestInput multipartRequestInput = mprInput.build();
+
+                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
             }
         });
 
     }
 
+
     @Override
     public Future<RpcResult<GetGroupDescriptionOutput>> getGroupDescription(final GetGroupDescriptionInput input) {
         return this.<GetGroupDescriptionOutput, Void>handleServiceCall(
@@ -94,9 +96,8 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPGROUPDESC, xid.getValue(), getVersion());
                         mprInput.setMultipartRequestBody(mprGroupDescCaseBuild.build());
-                        final Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
 
@@ -115,9 +116,8 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
                         final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPGROUPFEATURES, xid.getValue(), getVersion());
                         mprInput.setMultipartRequestBody(mprGroupFeaturesBuild.build());
-                        final Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
 
@@ -141,9 +141,8 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
                                 MultipartType.OFPMPGROUP, xid.getValue(), getVersion());
 
                         mprInput.setMultipartRequestBody(caseBuilder.build());
-                        final Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
     }
index 38585565747715092664857f911d20cc49eabd50..38b983f13ff05764e13c22ff3b322a415f4dc164 100644 (file)
@@ -8,7 +8,6 @@
 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;
@@ -18,6 +17,7 @@ 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.RequestInputUtils;
+import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInput;
@@ -29,6 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.OpendaylightMeterStatisticsService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder;
@@ -69,10 +70,8 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
                         MultipartRequestInputBuilder mprInput = RequestInputUtils
                                 .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), getVersion());
                         mprInput.setMultipartRequestBody(caseBuilder.build());
-                        Future<RpcResult<Void>> resultFromOFLib = getDeviceContext()
-                                .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters
-                                .listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
 
@@ -99,10 +98,8 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
                         MultipartRequestInputBuilder mprInput = RequestInputUtils
                                 .createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), getVersion());
                         mprInput.setMultipartRequestBody(caseBuilder.build());
-                        Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 }
         );
@@ -123,8 +120,8 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
                         MultipartRequestInputBuilder mprInput =
                                 RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETERFEATURES, xid.getValue(), getVersion());
                         mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build());
-                        Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
     }
@@ -146,8 +143,8 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
                         MultipartRequestInputBuilder mprInput =
                                 RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), getVersion());
                         mprInput.setMultipartRequestBody(caseBuilder.build());
-                        Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
 
index b3b41f58676f1487edf799b8303b7f426f92858d..b04f5ff79e91ce3e2b081ce606ffd021e31f0310 100644 (file)
@@ -8,7 +8,6 @@
 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;
@@ -19,8 +18,10 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
 import org.opendaylight.openflowplugin.impl.services.CommonService;
 import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
+import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil;
 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.port.stats._case.MultipartRequestPortStatsBuilder;
@@ -62,9 +63,8 @@ public class OpendaylightPortStatisticsServiceImpl extends CommonService impleme
                                 MultipartRequestInputBuilder mprInput = RequestInputUtils
                                         .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), getVersion());
                                 mprInput.setMultipartRequestBody(caseBuilder.build());
-                                Future<RpcResult<Void>> resultFromOFLib = getDeviceContext()
-                                        .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-                                return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                                MultipartRequestInput multipartRequestInput = mprInput.build();
+                                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                             }
                         });
     }
@@ -95,9 +95,8 @@ public class OpendaylightPortStatisticsServiceImpl extends CommonService impleme
                                 MultipartRequestInputBuilder mprInput = RequestInputUtils
                                         .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
                                 mprInput.setMultipartRequestBody(caseBuilder.build());
-                                Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                        .getConnectionAdapter().multipartRequest(mprInput.build());
-                                return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                                MultipartRequestInput multipartRequestInput = mprInput.build();
+                                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                             }
                         });
 
index 9ea587cf32413006d1a31ee1305597afbb76fe89..ae405f3145dbc49591554dfb5db68d9564df9730 100644 (file)
@@ -8,7 +8,6 @@
 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;
@@ -19,8 +18,10 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
 import org.opendaylight.openflowplugin.impl.services.CommonService;
 import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
+import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil;
 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.queue._case.MultipartRequestQueueBuilder;
@@ -55,19 +56,20 @@ public class OpendaylightQueueStatisticsServiceImpl extends CommonService implem
                         MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
                         MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
                         // Select all ports
-                        mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
                         // Select all the ports
                         mprQueueBuilder.setQueueId(OFConstants.OFPQ_ALL);
+                        mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
                         caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
 
                         // Set request body to main multipart request
                         final Xid xid = requestContext.getXid();
+
                         MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPQUEUE, xid.getValue(), getVersion());
                         mprInput.setMultipartRequestBody(caseBuilder.build());
-                        Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
 
@@ -85,11 +87,12 @@ public class OpendaylightQueueStatisticsServiceImpl extends CommonService implem
                         MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
                         MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
                         // Select all queues
-                        mprQueueBuilder.setQueueId(OFConstants.OFPQ_ALL);
                         // Select specific port
                         final short version = getVersion();
                         mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
                                 OpenflowVersion.get(version), input.getNodeConnectorId()));
+
+                        mprQueueBuilder.setQueueId(OFConstants.OFPQ_ALL);
                         caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
 
                         // Set request body to main multipart request
@@ -97,10 +100,8 @@ public class OpendaylightQueueStatisticsServiceImpl extends CommonService implem
                         MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPQUEUE, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(caseBuilder.build());
-                        Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
     }
@@ -129,9 +130,8 @@ public class OpendaylightQueueStatisticsServiceImpl extends CommonService implem
                         MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
                                 MultipartType.OFPMPQUEUE, xid.getValue(), version);
                         mprInput.setMultipartRequestBody(caseBuilder.build());
-                        Future<RpcResult<Void>> resultFromOFLib = getDeviceContext().getPrimaryConnectionContext()
-                                .getConnectionAdapter().multipartRequest(mprInput.build());
-                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInput multipartRequestInput = mprInput.build();
+                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
                     }
                 });
     }
diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/StatisticsServiceUtil.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/StatisticsServiceUtil.java
new file mode 100644 (file)
index 0000000..6cac89d
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.openflowplugin.impl.util;
+
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueue;
+import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
+import org.opendaylight.openflowplugin.api.openflow.device.Xid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+
+/**
+ * Created by Martin Bobak &lt;mbobak@cisco.com&gt; on 18.5.2015.
+ */
+public class StatisticsServiceUtil {
+
+    private StatisticsServiceUtil() {
+        throw new IllegalStateException("This class should not be instantiated");
+    }
+
+    public static ListenableFuture<RpcResult<Void>> getRpcResultListenableFuture(final Xid xid,
+                                                                                 final MultipartRequestInput multipartRequestInput,
+                                                                                 final DeviceContext deviceContext) {
+        final SettableFuture<RpcResult<Void>> settableFuture = SettableFuture.create();
+        final OutboundQueue outboundQueue = deviceContext.getPrimaryConnectionContext().getOutboundQueueProvider();
+        outboundQueue.commitEntry(xid.getValue(), multipartRequestInput, new FutureCallback<OfHeader>() {
+            @Override
+            public void onSuccess(final OfHeader ofHeader) {
+            }
+
+            @Override
+            public void onFailure(final Throwable throwable) {
+            }
+        });
+        return settableFuture;
+    }
+
+}