- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(multipartRequestInput);
- return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ final OutboundQueue outboundQueue = deviceContext.getPrimaryConnectionContext().getOutboundQueueProvider().getOutboundQueue();
+ final SettableFuture<RpcResult<Void>> settableFuture = SettableFuture.create();
+ synchronized (outboundQueue){
+ outboundQueue.commitEntry(xid.getValue(), multipartRequestInput, new FutureCallback<OfHeader>() {
+ @Override
+ public void onSuccess(final OfHeader ofHeader) {
+ settableFuture.set(RpcResultBuilder.<Void>success().build());
+ }
+
+ @Override
+ public void onFailure(final Throwable throwable) {
+ RpcResultBuilder rpcResultBuilder = RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, throwable.getMessage());
+ settableFuture.set(rpcResultBuilder.build());
+ }
+ });
+ }
+ return settableFuture;