summaryrefslogtreecommitdiffstats
path: root/messagebus
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-04-12 20:49:35 +0200
committerGitHub <noreply@github.com>2019-04-12 20:49:35 +0200
commite9c10d274452e15a4f29eda9761edd8f4e5fa76c (patch)
tree59edea0a118b7e718a6f1408baa52c1ee533a9e9 /messagebus
parent4b61dc2b0367ede6d7c99a40dfb996dc5330814b (diff)
Revert "Reply in own thread"
Diffstat (limited to 'messagebus')
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/Messenger.java31
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);