Wrap service handlers to method handleServiceCall.
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / services / OpendaylightQueueStatisticsServiceImpl.java
index c042272a63aad726cea4c5bd9a2f3abc57a74180..eddab61b29a7665c01112ca7e39c6691ff1d52b7 100644 (file)
@@ -7,15 +7,13 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
+import java.math.BigInteger;
 import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
 import org.opendaylight.openflowplugin.api.OFConstants;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.module.config.rev141015.SetConfigOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
 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;
@@ -35,99 +33,96 @@ import java.util.concurrent.Future;
  */
 public class OpendaylightQueueStatisticsServiceImpl extends CommonService implements OpendaylightQueueStatisticsService {
 
-
     @Override
     public Future<RpcResult<GetAllQueuesStatisticsFromAllPortsOutput>> getAllQueuesStatisticsFromAllPorts(
             final GetAllQueuesStatisticsFromAllPortsInput input) {
-        final RequestContext requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllQueuesStatisticsFromAllPortsOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-
-            MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
-            MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
-            // Select all ports
-            mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
-            // Select all the ports
-            mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
-            caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
-            // Set request body to main multipart request
-            MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<SetConfigOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib, provideWaitTime());
-        }
-        return result;
+        return this.<GetAllQueuesStatisticsFromAllPortsOutput, Void> handleServiceCall(
+                PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+
+                        final Xid xid = deviceContext.getNextXid();
+
+                        MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+                        MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+                        // Select all ports
+                        mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
+                        // Select all the ports
+                        mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
+                        caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+                        // Set request body to main multipart request
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPQUEUE, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
+
     }
 
     @Override
     public Future<RpcResult<GetAllQueuesStatisticsFromGivenPortOutput>> getAllQueuesStatisticsFromGivenPort(
             final GetAllQueuesStatisticsFromGivenPortInput input) {
-        final RequestContext requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllQueuesStatisticsFromGivenPortOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-
-
-            MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
-            MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
-            // Select all queues
-            mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
-            // Select specific port
-            mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
-                    OpenflowVersion.get(version),
-                    input.getNodeConnectorId()));
-            caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
-            // Set request body to main multipart request
-            MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<SetConfigOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib, provideWaitTime());
-        }
-        return result;
+        return this.<GetAllQueuesStatisticsFromGivenPortOutput, Void> handleServiceCall(
+                 PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+                        MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+                        // Select all queues
+                        mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
+                        // Select specific port
+                        mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
+                                OpenflowVersion.get(version), input.getNodeConnectorId()));
+                        caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+                        // Set request body to main multipart request
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPQUEUE, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+
+                    }
+                });
     }
 
     @Override
     public Future<RpcResult<GetQueueStatisticsFromGivenPortOutput>> getQueueStatisticsFromGivenPort(
             final GetQueueStatisticsFromGivenPortInput input) {
-        final RequestContext requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetQueueStatisticsFromGivenPortOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-
-            MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
-            MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
-            // Select specific queue
-            mprQueueBuilder.setQueueId(input.getQueueId().getValue());
-            // Select specific port
-            mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
-                    OpenflowVersion.get(version),
-                    input.getNodeConnectorId()));
-            caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
-            // Set request body to main multipart request
-            MultipartRequestInputBuilder mprInput = RequestInputUtils
-                    .createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<SetConfigOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib, provideWaitTime());
-        }
-        return result;
+        return this.<GetQueueStatisticsFromGivenPortOutput, Void> handleServiceCall(
+                PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+                        MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+                        // Select specific queue
+                        mprQueueBuilder.setQueueId(input.getQueueId().getValue());
+                        // Select specific port
+                        mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
+                                OpenflowVersion.get(version), input.getNodeConnectorId()));
+                        caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+                        // Set request body to main multipart request
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPQUEUE, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
     }
 
 }