diff options
author | Tor Egge <Tor.Egge@oath.com> | 2017-12-11 14:11:12 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@oath.com> | 2017-12-11 14:49:46 +0000 |
commit | f4c28394f3d8587ff7823799dbb236d3162e9150 (patch) | |
tree | dbe1bdd172ff8fa569a2b30b395f0d992020636b /searchcore/src/tests/proton/summaryengine | |
parent | fefc3ca0ce485ac61f8ce67eb08edb2fe23c7137 (diff) |
Use standard locking in searchcore (pass 2).
Diffstat (limited to 'searchcore/src/tests/proton/summaryengine')
-rw-r--r-- | searchcore/src/tests/proton/summaryengine/summaryengine.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/searchcore/src/tests/proton/summaryengine/summaryengine.cpp b/searchcore/src/tests/proton/summaryengine/summaryengine.cpp index db707e4aa97..4951b1cd569 100644 --- a/searchcore/src/tests/proton/summaryengine/summaryengine.cpp +++ b/searchcore/src/tests/proton/summaryengine/summaryengine.cpp @@ -9,8 +9,11 @@ #include <vespa/vespalib/util/compressor.h> #include <vespa/searchlib/common/transport.h> #include <vespa/fnet/frt/rpcrequest.h> -#include <vespa/log/log.h> +#include <mutex> +#include <condition_variable> +#include <chrono> +#include <vespa/log/log.h> LOG_SETUP("summaryengine_test"); using namespace search::engine; @@ -81,8 +84,9 @@ public: class MyDocsumClient : public DocsumClient { private: - vespalib::Monitor _monitor; - DocsumReply::UP _reply; + std::mutex _lock; + std::condition_variable _cond; + DocsumReply::UP _reply; public: MyDocsumClient(); @@ -90,16 +94,18 @@ public: ~MyDocsumClient(); void getDocsumsDone(DocsumReply::UP reply) override { - vespalib::MonitorGuard guard(_monitor); + std::lock_guard<std::mutex> guard(_lock); _reply = std::move(reply); - guard.broadcast(); + _cond.notify_all(); } DocsumReply::UP getReply(uint32_t millis) { - vespalib::MonitorGuard guard(_monitor); - vespalib::TimedWaiter waiter(guard, millis); - while (_reply.get() == NULL && waiter.hasTime()) { - waiter.wait(); + std::unique_lock<std::mutex> guard(_lock); + auto deadline = std::chrono::steady_clock::now() + std::chrono::milliseconds(millis); + while (!_reply) { + if (_cond.wait_until(guard, deadline) == std::cv_status::timeout) { + break; + } } return std::move(_reply); } |