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;
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();
}
});