loolwsd/LOOLKit.cpp | 52 ------------------------------------- loolwsd/Makefile.am | 1 loolwsd/QueueHandler.hpp | 66 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 51 deletions(-)
New commits: commit c3826587e10af8208ffd160b0077c245d85f92d6 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Wed Jan 6 08:18:56 2016 -0500 loolwsd: moved QueueHandler into own file Change-Id: I281a9bd12731340673cb66f1f2ac6a133cbe71d0 Reviewed-on: https://gerrit.libreoffice.org/21159 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 04d5e80..c352422 100644 --- a/loolwsd/LOOLKit.cpp +++ b/loolwsd/LOOLKit.cpp @@ -38,7 +38,7 @@ #include <LibreOfficeKit/LibreOfficeKitInit.h> #include "Common.hpp" -#include "MessageQueue.hpp" +#include "QueueHandler.hpp" #include "Util.hpp" #include "ChildProcessSession.hpp" #include "LOOLProtocol.hpp" @@ -316,56 +316,6 @@ private: FastMutex CallBackWorker::_mutex; -// This thread handles incoming messages -// on a given kit instance. -class QueueHandler: public Runnable -{ -public: - QueueHandler(MessageQueue& queue, const std::shared_ptr<LOOLSession>& session): - _queue(queue), - _session(session) - { - } - - void run() override - { - static const std::string thread_name = "kit_queue_" + _session->getId(); -#ifdef __linux - if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0) - Log::error("Cannot set thread name to " + thread_name + "."); -#endif - Log::debug("Thread [" + thread_name + "] started."); - - try - { - while (true) - { - const std::string input = _queue.get(); - if (input == "eof") - break; - if (!_session->handleInput(input.c_str(), input.size())) - break; - } - } - catch (const std::exception& exc) - { - Log::error(std::string("Exception: ") + exc.what()); - raise(SIGABRT); - } - catch (...) - { - Log::error("Unexpected Exception."); - raise(SIGABRT); - } - - Log::debug("Thread [" + thread_name + "] finished."); - } - -private: - MessageQueue& _queue; - std::shared_ptr<LOOLSession> _session; -}; - class Connection: public Runnable { public: diff --git a/loolwsd/Makefile.am b/loolwsd/Makefile.am index 4e219ea..24237e0 100644 --- a/loolwsd/Makefile.am +++ b/loolwsd/Makefile.am @@ -29,6 +29,7 @@ loolmap_SOURCES = loolmap.c noinst_HEADERS = LOKitHelper.hpp LOOLProtocol.hpp LOOLSession.hpp MasterProcessSession.hpp ChildProcessSession.hpp \ LOOLWSD.hpp LoadTest.hpp MessageQueue.hpp TileCache.hpp Util.hpp Png.hpp Common.hpp Capabilities.hpp \ + QueueHandler.hpp \ bundled/include/LibreOfficeKit/LibreOfficeKit.h bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h \ bundled/include/LibreOfficeKit/LibreOfficeKitInit.h bundled/include/LibreOfficeKit/LibreOfficeKitTypes.h diff --git a/loolwsd/QueueHandler.hpp b/loolwsd/QueueHandler.hpp new file mode 100644 index 0000000..5d07b9a --- /dev/null +++ b/loolwsd/QueueHandler.hpp @@ -0,0 +1,66 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <Poco/Runnable.h> + +#include "MessageQueue.hpp" +#include "LOOLSession.hpp" +#include "Util.hpp" + +// This thread handles incoming messages +// on a given kit instance. +class QueueHandler: public Poco::Runnable +{ +public: + QueueHandler(MessageQueue& queue, const std::shared_ptr<LOOLSession>& session): + _queue(queue), + _session(session) + { + } + + void run() override + { + static const std::string thread_name = "kit_queue_" + _session->getId(); +#ifdef __linux + if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0) + Log::error("Cannot set thread name to " + thread_name + "."); +#endif + Log::debug("Thread [" + thread_name + "] started."); + + try + { + while (true) + { + const std::string input = _queue.get(); + if (input == "eof") + break; + if (!_session->handleInput(input.c_str(), input.size())) + break; + } + } + catch (const std::exception& exc) + { + Log::error(std::string("Exception: ") + exc.what()); + raise(SIGABRT); + } + catch (...) + { + Log::error("Unexpected Exception."); + raise(SIGABRT); + } + + Log::debug("Thread [" + thread_name + "] finished."); + } + +private: + MessageQueue& _queue; + std::shared_ptr<LOOLSession> _session; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits