[Libreoffice-commits] online.git: loolwsd/LOOLKit.cpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Mon Aug 15 03:11:14 UTC 2016


 loolwsd/LOOLKit.cpp |   37 +++++++++++++++----------------------
 1 file changed, 15 insertions(+), 22 deletions(-)

New commits:
commit a30526c87ea01026f6ff3f07671ddfc614aebc5e
Author: Ashod Nakashian <ashod.nakashian at 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 <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at 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.


More information about the Libreoffice-commits mailing list