summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/summaryengine
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@oath.com>2017-12-11 14:11:12 +0000
committerTor Egge <Tor.Egge@oath.com>2017-12-11 14:49:46 +0000
commitf4c28394f3d8587ff7823799dbb236d3162e9150 (patch)
treedbe1bdd172ff8fa569a2b30b395f0d992020636b /searchcore/src/tests/proton/summaryengine
parentfefc3ca0ce485ac61f8ce67eb08edb2fe23c7137 (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.cpp24
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);
}