diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-04-12 20:49:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-12 20:49:35 +0200 |
commit | e9c10d274452e15a4f29eda9761edd8f4e5fa76c (patch) | |
tree | 59edea0a118b7e718a6f1408baa52c1ee533a9e9 /messagebus | |
parent | 4b61dc2b0367ede6d7c99a40dfb996dc5330814b (diff) |
Revert "Reply in own thread"
Diffstat (limited to 'messagebus')
-rwxr-xr-x | messagebus/src/main/java/com/yahoo/messagebus/Messenger.java | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java b/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java index 7211e4cead0..2cb2f0967e5 100755 --- a/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java @@ -78,11 +78,7 @@ public class Messenger implements Runnable { * @param handler The handler to return to. */ public void deliverReply(final Reply reply, final ReplyHandler handler) { - if (destroyed.get()) { - reply.discard(); - } else { - handler.handleReply(reply); - } + enqueue(new ReplyTask(reply, handler)); } /** @@ -212,6 +208,31 @@ public class Messenger implements Runnable { void destroy(); } + private static class ReplyTask implements Task { + + final ReplyHandler handler; + Reply reply; + + ReplyTask(final Reply reply, final ReplyHandler handler) { + this.reply = reply; + this.handler = handler; + } + + @Override + public void run() { + final Reply reply = this.reply; + this.reply = null; + handler.handleReply(reply); + } + + @Override + public void destroy() { + if (reply != null) { + reply.discard(); + } + } + } + private static class SyncTask implements Task { final CountDownLatch latch = new CountDownLatch(1); |