loolwsd/LOOLKit.cpp | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-)
New commits: commit a30526c87ea01026f6ff3f07671ddfc614aebc5e Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sat Aug 13 19:32:59 2016 -0400 loolwsd: remove queue thread from child socket handler Change-Id: Ibcdd6146bf3fc20813520213b696079b793cf830 Reviewed-on: https://gerrit.libreoffice.org/28126 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 994e2a7..5a37d42 100644 --- a/loolwsd/LOOLKit.cpp +++ b/loolwsd/LOOLKit.cpp @@ -52,7 +52,6 @@ #include "LibreOfficeKit.hpp" #include "Log.hpp" #include "Png.hpp" -#include "QueueHandler.hpp" #include "Rectangle.hpp" #include "TileDesc.hpp" #include "Unit.hpp" @@ -284,27 +283,21 @@ public: try { - auto queue = std::make_shared<TileQueue>(); - QueueHandler handler(queue, _session, "kit_queue_" + _session->getId()); - - Thread queueHandlerThread; - queueHandlerThread.start(handler); - std::shared_ptr<ChildSession> session = _session; - IoUtil::SocketProcessor(_ws, - [&queue](const std::vector<char>& payload) + [this](const std::vector<char>& payload) { - queue->put(payload); + if (!_session->handleInput(payload.data(), payload.size())) + { + Log::info("Socket handler flagged for finishing."); + return false; + } + return true; }, - [&session]() { session->closeFrame(); }, - [&queueHandlerThread]() { return TerminationFlag || !queueHandlerThread.isRunning(); }); - - queue->clear(); - queue->put("eof"); - queueHandlerThread.join(); + [this]() { _session->closeFrame(); }, + []() { return !!TerminationFlag; }); - if (session->isCloseFrame()) + if (_session->isCloseFrame()) { Log::trace("Normal close handshake."); _ws->shutdown(); @@ -760,15 +753,15 @@ private: static void ViewCallback(const int nType, const char* pPayload, void* pData) { - const std::string payload = pPayload ? pPayload : "(nil)"; - Log::trace() << "Document::ViewCallback " - << LOKitHelper::kitCallbackTypeToString(nType) - << " [" << payload << "]." << Log::end; - CallbackDescriptor* pDescr = reinterpret_cast<CallbackDescriptor*>(pData); assert(pDescr && "Null callback data."); assert(pDescr->Doc && "Null Document instance."); + const std::string payload = pPayload ? pPayload : "(nil)"; + Log::trace() << "Document::ViewCallback [" << pDescr->ViewId + << "] [" << LOKitHelper::kitCallbackTypeToString(nType) + << "] [" << payload << "]." << Log::end; + // Forward to the same view only. // Demultiplexing is done by Core. // TODO: replace with a map to be faster. _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits