[Libreoffice-commits] online.git: tools/Replay.hpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Fri Feb 10 07:05:12 UTC 2017


 tools/Replay.hpp |   42 +++++++++++++++++++++++++++++-------------
 1 file changed, 29 insertions(+), 13 deletions(-)

New commits:
commit d0b9de7615de82fc711f5d2c7fa28639cd2bab35
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Fri Feb 10 01:04:46 2017 -0500

    wsd: handle and ignore failed connection when replaying
    
    Change-Id: I11c29b8c0076e9500f9df743f438bf6f4dbe88d1
    Reviewed-on: https://gerrit.libreoffice.org/34115
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/tools/Replay.hpp b/tools/Replay.hpp
index 5a23935..684401f 100644
--- a/tools/Replay.hpp
+++ b/tools/Replay.hpp
@@ -25,20 +25,28 @@ public:
     static
     std::shared_ptr<Connection> create(const std::string& serverURI, const std::string& documentURL, const std::string& sessionId)
     {
-        Poco::URI uri(serverURI);
+        try
+        {
+            Poco::URI uri(serverURI);
 
-        std::unique_lock<std::mutex> lock(Mutex);
+            std::unique_lock<std::mutex> lock(Mutex);
 
-        // Load a document and get its status.
-        std::cout << "NewSession [" << sessionId << "]: " << uri.toString() << "... ";
+            // Load a document and get its status.
+            std::cout << "NewSession [" << sessionId << "]: " << uri.toString() << "... ";
 
-        std::string encodedUri;
-        Poco::URI::encode(documentURL, ":/?", encodedUri);
-        Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, "/lool/" + encodedUri + "/ws");
-        Poco::Net::HTTPResponse response;
-        auto ws = helpers::connectLOKit(uri, request, response, sessionId + ' ');
-        std::cout << "Connected.\n";
-        return std::shared_ptr<Connection>(new Connection(documentURL, sessionId, ws));
+            std::string encodedUri;
+            Poco::URI::encode(documentURL, ":/?", encodedUri);
+            Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, "/lool/" + encodedUri + "/ws");
+            Poco::Net::HTTPResponse response;
+            auto ws = helpers::connectLOKit(uri, request, response, sessionId + ' ');
+            std::cout << "Connected to " << serverURI << ".\n";
+            return std::shared_ptr<Connection>(new Connection(documentURL, sessionId, ws));
+        }
+        catch (const std::exception& exc)
+        {
+            std::cout << "ERROR while connecting to [" << serverURI << "]: " << exc.what() << std::endl;
+            return nullptr;
+        }
     }
 
     const std::string& getName() const { return _name; }
@@ -176,14 +184,22 @@ protected:
                         }
                         else
                         {
-                            it->second.emplace(rec.SessionId, Connection::create(_serverUri, uri, rec.SessionId));
+                            auto connection = Connection::create(_serverUri, uri, rec.SessionId);
+                            if (connection)
+                            {
+                                it->second.emplace(rec.SessionId, connection);
+                            }
                         }
                     }
                     else
                     {
                         std::cout << "New Document: " << uri << "\n";
                         _childToDoc.emplace(rec.Pid, uri);
-                        _sessions[uri].emplace(rec.SessionId, Connection::create(_serverUri, uri, rec.SessionId));
+                        auto connection = Connection::create(_serverUri, uri, rec.SessionId);
+                        if (connection)
+                        {
+                            _sessions[uri].emplace(rec.SessionId, connection);
+                        }
                     }
                 }
                 else if (rec.Payload.find(EndSession) == 0)


More information about the Libreoffice-commits mailing list