diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-09-26 17:03:42 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-09-27 11:34:38 +0200 |
commit | a20954e6345e87e318ee8c9a646841ada7c61718 (patch) | |
tree | 9d926398fa2bf4fa15facb7a79a8c3fa26f16528 /messagebus/src | |
parent | 742fe9f527d4d6063b15c4a5a3b0baec14057830 (diff) |
Also reply in the thread pool.
Diffstat (limited to 'messagebus/src')
-rw-r--r-- | messagebus/src/vespa/messagebus/network/rpcsend.cpp | 10 | ||||
-rw-r--r-- | messagebus/src/vespa/messagebus/network/rpcsend.h | 1 |
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, |