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

Ashod Nakashian ashod.nakashian at collabora.co.uk
Thu Mar 10 04:24:48 UTC 2016


 loolwsd/LOOLWSD.cpp              |    7 +--
 loolwsd/MasterProcessSession.cpp |   77 +++++++++++++++++++--------------------
 2 files changed, 41 insertions(+), 43 deletions(-)

New commits:
commit 237e0c0e9abdd62f4107fa249e04b18c043eb8a8
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Wed Mar 9 23:17:26 2016 -0500

    loolwsd: minor cleanups and const correctness
    
    Change-Id: Ic3b26e1fbf5feba1667bc3dc1737d037590a5928
    Reviewed-on: https://gerrit.libreoffice.org/23109
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index dee237c..5f841d8 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -501,10 +501,9 @@ private:
 
         //TODO: Authenticate the caller.
         // authenticate(request, response);
-
-        NameValueCollection cookies;
-        request.getCookies(cookies);
-        Log::info("Cookie: " + cookies.get("PHPSESSID", ""));
+        // NameValueCollection cookies;
+        // request.getCookies(cookies);
+        // Log::info("Cookie: " + cookies.get("PHPSESSID", ""));
 
         auto ws = std::make_shared<WebSocket>(request, response);
         auto session = std::make_shared<MasterProcessSession>(id, LOOLSession::Kind::ToClient, ws);
diff --git a/loolwsd/MasterProcessSession.cpp b/loolwsd/MasterProcessSession.cpp
index 92e2126..99b147e 100644
--- a/loolwsd/MasterProcessSession.cpp
+++ b/loolwsd/MasterProcessSession.cpp
@@ -446,39 +446,36 @@ bool MasterProcessSession::loadDocument(const char* /*buffer*/, int /*length*/,
         return false;
     }
 
-    std::string timestamp;
-    parseDocOptions(tokens, _loadPart, timestamp);
-
     try
     {
-        // Strip query params because we need unique URI (need a better solution!).
-        StringTokenizer urlTokens(_docURL, "?", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM);
+        std::string timestamp;
+        parseDocOptions(tokens, _loadPart, timestamp);
 
-        // request new URL session
-        const std::string aMessage = "request " + getId() + " " + urlTokens[0] + "\r\n";
-        Log::trace("MasterToBroker: " + aMessage.substr(0, aMessage.length()-2));
+        // Request a kit process for this doc.
+        Poco::URI uri(_docURL);
+        const std::string aMessage = "request " + getId() + " " + uri.getPath() + "\n";
+        Log::trace("MasterToBroker: " + aMessage.substr(0, aMessage.length() - 1));
         Util::writeFIFO(LOOLWSD::BrokerWritePipe, aMessage);
+
+        _tileCache.reset(new TileCache(_docURL, timestamp));
+
+        // Finally, wait for the Child to connect to Master,
+        // link the document in jail and dispatch load to child.
+        dispatchChild();
+
+        return true;
     }
     catch (const Poco::SyntaxException&)
     {
         sendTextFrame("error: cmd=load kind=uriinvalid");
-        return false;
     }
 
-    _tileCache.reset(new TileCache(_docURL, timestamp));
-
-    // Finally, wait for the Child to connect to Master,
-    // link the document in jail and dispatch load to child.
-    dispatchChild();
-
-    return true;
+    return false;
 }
 
 bool MasterProcessSession::getStatus(const char *buffer, int length)
 {
-    std::string status;
-
-    status = _tileCache->getTextFile("status.txt");
+    const std::string status = _tileCache->getTextFile("status.txt");
     if (status.size() > 0)
     {
         sendTextFrame(status);
@@ -500,7 +497,7 @@ bool MasterProcessSession::getCommandValues(const char *buffer, int length, Stri
         return false;
     }
 
-    std::string cmdValues = _tileCache->getTextFile("cmdValues" + command + ".txt");
+    const std::string cmdValues = _tileCache->getTextFile("cmdValues" + command + ".txt");
     if (cmdValues.size() > 0)
     {
         sendTextFrame(cmdValues);
@@ -515,7 +512,7 @@ bool MasterProcessSession::getCommandValues(const char *buffer, int length, Stri
 
 bool MasterProcessSession::getPartPageRectangles(const char *buffer, int length)
 {
-    std::string partPageRectangles = _tileCache->getTextFile("partpagerectangles.txt");
+    const std::string partPageRectangles = _tileCache->getTextFile("partpagerectangles.txt");
     if (partPageRectangles.size() > 0)
     {
         sendTextFrame(partPageRectangles);
@@ -536,7 +533,6 @@ std::string MasterProcessSession::getSaveAs()
 void MasterProcessSession::sendFontRendering(const char *buffer, int length, StringTokenizer& tokens)
 {
     std::string font;
-
     if (tokens.count() < 2 ||
         !getTokenString(tokens[1], "font", font))
     {
@@ -544,7 +540,7 @@ void MasterProcessSession::sendFontRendering(const char *buffer, int length, Str
         return;
     }
 
-    std::string response = "renderfont: " + Poco::cat(std::string(" "), tokens.begin() + 1, tokens.end()) + "\n";
+    const std::string response = "renderfont: " + Poco::cat(std::string(" "), tokens.begin() + 1, tokens.end()) + "\n";
 
     std::vector<char> output;
     output.resize(response.size());
@@ -627,7 +623,6 @@ void MasterProcessSession::sendTile(const char *buffer, int length, StringTokeni
     forwardToPeer(buffer, length);
 }
 
-
 void MasterProcessSession::sendCombinedTiles(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
 {
     int part, pixelWidth, pixelHeight, tileWidth, tileHeight;
@@ -694,26 +689,30 @@ void MasterProcessSession::sendCombinedTiles(const char* /*buffer*/, int /*lengt
 
         if (cachedTile && cachedTile->is_open())
         {
-            std::string response = "tile: part=" + std::to_string(part) +
-                               " width=" + std::to_string(pixelWidth) +
-                               " height=" + std::to_string(pixelHeight) +
-                               " tileposx=" + std::to_string(x) +
-                               " tileposy=" + std::to_string(y) +
-                               " tilewidth=" + std::to_string(tileWidth) +
-                               " tileheight=" + std::to_string(tileHeight);
-
-            if (reqTimestamp != "")
-                response += " timestamp=" + reqTimestamp;
+            std::ostringstream oss;
+            oss << "tile: part=" << part
+                << " width=" << pixelWidth
+                << " height=" << pixelHeight
+                << " tileposx=" << x
+                << " tileposy=" << y
+                << " tilewidth=" << tileWidth
+                << " tileheight=" << tileHeight;
+
+            if (!reqTimestamp.empty())
+            {
+                oss << " timestamp=" << reqTimestamp;
+            }
 
-            response += "\n";
+            oss << "\n";
+            const std::string response = oss.str();
 
             std::vector<char> output;
             output.reserve(4 * pixelWidth * pixelHeight);
             output.resize(response.size());
             std::memcpy(output.data(), response.data(), response.size());
             cachedTile->seekg(0, std::ios_base::end);
-            size_t pos = output.size();
-            std::streamsize size = cachedTile->tellg();
+            const size_t pos = output.size();
+            const std::streamsize size = cachedTile->tellg();
             output.resize(pos + size);
             cachedTile->seekg(0, std::ios_base::beg);
             cachedTile->read(output.data() + pos, size);
@@ -747,7 +746,7 @@ void MasterProcessSession::sendCombinedTiles(const char* /*buffer*/, int /*lengt
                                " tilewidth=" + std::to_string(tileWidth) +
                                " tileheight=" + std::to_string(tileHeight);
 
-    if (reqTimestamp != "")
+    if (!reqTimestamp.empty())
         forward += " timestamp=" + reqTimestamp;
 
     forwardToPeer(forward.c_str(), forward.size());
@@ -767,7 +766,7 @@ void MasterProcessSession::dispatchChild()
     {
         AvailableChildSessionCV.wait_for(
             lock,
-            std::chrono::milliseconds(2000),
+            std::chrono::milliseconds(3000),
             [&bFound, this]
             {
                 return (bFound = AvailableChildSessions.find(getId()) != AvailableChildSessions.end());


More information about the Libreoffice-commits mailing list