loolwsd/LOOLKit.cpp | 51 +++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 30 deletions(-)
New commits: commit 49d7c0e17f3f0b027a932f72295ef83995cc1232 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Tue Jan 19 20:31:36 2016 -0500 loolwsd: improved lokit callback notification dispatcher Change-Id: I88abad83a3d06eb530200d921ef25b68465b82b6 Reviewed-on: https://gerrit.libreoffice.org/21675 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp index 0883b48..b779180 100644 --- a/loolwsd/LOOLKit.cpp +++ b/loolwsd/LOOLKit.cpp @@ -264,48 +264,40 @@ public: while (!_stop && !TerminationFlag) { Notification::Ptr aNotification(_queue.waitDequeueNotification()); - if (!TerminationFlag && aNotification) + if (!_stop && !TerminationFlag && aNotification) { CallBackNotification::Ptr aCallBackNotification = aNotification.cast<CallBackNotification>(); - if (aCallBackNotification) + assert(aCallBackNotification); + + const auto nType = aCallBackNotification->m_nType; + try { - const auto nType = aCallBackNotification->m_nType; - try - { - callback(nType, aCallBackNotification->m_aPayload, aCallBackNotification->m_pSession); - } - catch (const Exception& exc) - { - Log::error() << "Error while handling callback [" << callbackTypeToString(nType) << "]. " - << exc.displayText() - << (exc.nested() ? " (" + exc.nested()->displayText() + ")" : "") - << Log::end; - } - catch (const std::exception& exc) - { - Log::error("Error while handling callback [" + callbackTypeToString(nType) + "]. " + - std::string("Exception: ") + exc.what()); - } - catch (...) - { - Log::error("Unexpected Exception while handling callback [" + callbackTypeToString(nType) + "]."); - } + callback(nType, aCallBackNotification->m_aPayload, aCallBackNotification->m_pSession); + } + catch (const Exception& exc) + { + Log::error() << "Error while handling callback [" << callbackTypeToString(nType) << "]. " + << exc.displayText() + << (exc.nested() ? " (" + exc.nested()->displayText() + ")" : "") + << Log::end; + } + catch (const std::exception& exc) + { + Log::error("Error while handling callback [" + callbackTypeToString(nType) + "]. " + + std::string("Exception: ") + exc.what()); } } - else break; + else + break; } Log::debug("Thread [" + thread_name + "] finished."); } - void wakeUpAll() - { - _queue.wakeUpAll(); - } - void stop() { _stop = true; + _queue.wakeUpAll(); } private: @@ -491,7 +483,6 @@ public: // Wait for the callback worker to finish. _callbackWorker.stop(); - _callbackWorker.wakeUpAll(); _callbackThread.join(); // Flag all connections to stop. _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits