aboutsummaryrefslogtreecommitdiffstats
path: root/messagebus
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-09-26 17:03:42 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2017-09-27 11:34:38 +0200
commita20954e6345e87e318ee8c9a646841ada7c61718 (patch)
tree9d926398fa2bf4fa15facb7a79a8c3fa26f16528 /messagebus
parent742fe9f527d4d6063b15c4a5a3b0baec14057830 (diff)
Also reply in the thread pool.
Diffstat (limited to 'messagebus')
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsend.cpp10
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsend.h1
2 files changed, 10 insertions, 1 deletions
diff --git a/messagebus/src/vespa/messagebus/network/rpcsend.cpp b/messagebus/src/vespa/messagebus/network/rpcsend.cpp
index 5d5611a45fa..931c87a7d91 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsend.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcsend.cpp
@@ -15,6 +15,7 @@
#include <vespa/vespalib/data/slime/cursor.h>
using vespalib::make_string;
+using vespalib::makeLambdaTask;
namespace mbus {
@@ -147,7 +148,7 @@ RPCSend::send(RoutingNode &recipient, const vespalib::Version &version,
void
RPCSend::RequestDone(FRT_RPCRequest *req)
{
- _net->getExecutor().execute(vespalib::makeLambdaTask([this, req]() { doRequestDone(req);}));
+ _net->getExecutor().execute(makeLambdaTask([this, req]() { doRequestDone(req);}));
}
void
@@ -219,6 +220,13 @@ RPCSend::decode(vespalib::stringref protocolName, const vespalib::Version & vers
void
RPCSend::handleReply(Reply::UP reply)
{
+ _net->getExecutor().execute(makeLambdaTask([this, reply = std::move(reply)]() mutable {
+ doHandleReply(std::move(reply));
+ }));
+}
+
+void
+RPCSend::doHandleReply(Reply::UP reply) {
ReplyContext::UP ctx(static_cast<ReplyContext*>(reply->getContext().value.PTR));
FRT_RPCRequest &req = ctx->getRequest();
string version = ctx->getVersion().toString();
diff --git a/messagebus/src/vespa/messagebus/network/rpcsend.h b/messagebus/src/vespa/messagebus/network/rpcsend.h
index d1d720803ec..ec455aea7bd 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsend.h
+++ b/messagebus/src/vespa/messagebus/network/rpcsend.h
@@ -84,6 +84,7 @@ public:
private:
void doRequest(FRT_RPCRequest *req);
void doRequestDone(FRT_RPCRequest *req);
+ void doHandleReply(std::unique_ptr<Reply> reply);
void attach(RPCNetwork &net) final override;
void handleDiscard(Context ctx) final override;
void sendByHandover(RoutingNode &recipient, const vespalib::Version &version,