Returning of future from request context - PacketProcessingService.
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / services / PacketProcessingServiceImpl.java
index 7c8c6df8c72c36423e2c591f3cd8433adf7e21e3..64948dc28aee70a76db7431b5af50074c7c59f11 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.openflowplugin.impl.services;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
 import java.util.concurrent.Future;
 import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueue;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
@@ -46,26 +45,28 @@ public class PacketProcessingServiceImpl extends CommonService implements Packet
 
                 final OutboundQueue outboundQueue = getDeviceContext().getPrimaryConnectionContext().getOutboundQueueProvider();
 
-                final SettableFuture<RpcResult<Void>> settableFuture = SettableFuture.create();
-
                 outboundQueue.commitEntry(xid.getValue(), message, new FutureCallback<OfHeader>() {
+
+                    RpcResultBuilder<Void> rpcResultBuilder;
                     @Override
                     public void onSuccess(final OfHeader ofHeader) {
+                        rpcResultBuilder = RpcResultBuilder.<Void>success();
+                        requestContext.setResult(rpcResultBuilder.build());
                         RequestContextUtil.closeRequstContext(requestContext);
+
                         getMessageSpy().spyMessage(message.getImplementedInterface(), MessageSpy.STATISTIC_GROUP.TO_SWITCH_SUBMIT_SUCCESS);
-                        final RpcResultBuilder<Void> rpcResultBuilder = RpcResultBuilder.<Void>success();
-                        settableFuture.set(rpcResultBuilder.build());
                     }
 
                     @Override
                     public void onFailure(final Throwable throwable) {
+                        rpcResultBuilder = RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, throwable.getMessage(), throwable);
+                        requestContext.setResult(rpcResultBuilder.build());
                         RequestContextUtil.closeRequstContext(requestContext);
+
                         getMessageSpy().spyMessage(message.getImplementedInterface(), MessageSpy.STATISTIC_GROUP.TO_SWITCH_SUBMIT_FAILURE);
-                        final RpcResultBuilder<Void> rpcResultBuilder = RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, throwable.getMessage(), throwable);
-                        settableFuture.set(rpcResultBuilder.build());
                     }
                 });
-                return settableFuture;
+                return requestContext.getFuture();
             }
         });