From 53eeed97e27c8c84df9fcc690a2328729f924ac5 Mon Sep 17 00:00:00 2001 From: Vaci Koblizek Date: Tue, 1 Dec 2020 17:12:49 +0000 Subject: [PATCH] make direct call if QueuedClient has resolved --- runtime/src/main/java/org/capnproto/Capability.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/runtime/src/main/java/org/capnproto/Capability.java b/runtime/src/main/java/org/capnproto/Capability.java index 9bf9e28..b7f614b 100644 --- a/runtime/src/main/java/org/capnproto/Capability.java +++ b/runtime/src/main/java/org/capnproto/Capability.java @@ -782,18 +782,16 @@ public final class Capability { @Override public VoidPromiseAndPipeline call(long interfaceId, short methodId, CallContextHook ctx) { - var promise = new CompletableFuture(); - if (this.redirect == null) { - this.queuedCalls.add(promise); - } - else { - promise.complete(this.redirect); + if (this.redirect != null) { + return this.redirect.call(interfaceId, methodId, ctx); } + var promise = new CompletableFuture(); var callResult = promise.thenApply( client -> client.call(interfaceId, methodId, ctx)); var pipelineResult = callResult.thenApply(result -> result.pipeline); var pipeline = new QueuedPipeline(pipelineResult); + this.queuedCalls.add(promise); return new VoidPromiseAndPipeline(pipelineResult.thenRun(() -> {}), pipeline); }