From b1c5cf6a1ab950bab87330edeaf46d98b934777f Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Thu, 14 Nov 2019 23:21:45 +0100 Subject: [PATCH] synchronously and immediate shutdown --- Adapter.cc | 13 ++++++++++--- Adapter.hxx | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Adapter.cc b/Adapter.cc index a628201..c20e1d7 100644 --- a/Adapter.cc +++ b/Adapter.cc @@ -36,17 +36,25 @@ namespace pEp { notifyHandshake_t _notifyHandshake = nullptr; std::thread *_sync_thread = nullptr; - ::utility::locked_queue< SYNC_EVENT > q; + ::utility::locked_queue< SYNC_EVENT, ::free_Sync_event > q; std::mutex m; int _inject_sync_event(SYNC_EVENT ev, void *management) { try { - q.push_front(ev); + if (ev == nullptr) + q.push_back(ev); + else + q.push_front(ev); } catch (exception&) { return 1; } + if (ev == nullptr) { + if (_sync_thread) + _sync_thread->join(); + q.clear(); + } return 0; } @@ -103,7 +111,6 @@ namespace pEp { { if (_sync_thread) { _inject_sync_event(nullptr, nullptr); - _sync_thread->join(); delete _sync_thread; _sync_thread = nullptr; } diff --git a/Adapter.hxx b/Adapter.hxx index cd52a7c..d41a3c0 100644 --- a/Adapter.hxx +++ b/Adapter.hxx @@ -12,7 +12,7 @@ namespace pEp { extern notifyHandshake_t _notifyHandshake; extern std::thread *_sync_thread; - extern ::utility::locked_queue< SYNC_EVENT > q; + extern ::utility::locked_queue< SYNC_EVENT, ::free_Sync_event > q; extern std::mutex m; SYNC_EVENT _retrieve_next_sync_event(void *management, unsigned threshold);