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

Ashod Nakashian ashod.nakashian at collabora.co.uk
Mon Aug 22 05:48:30 UTC 2016


 loolwsd/LOOLSession.cpp |   14 ++++------
 loolwsd/LOOLSession.hpp |   62 ++++++++++++++++++------------------------------
 loolwsd/LOOLWSD.cpp     |    2 -
 3 files changed, 30 insertions(+), 48 deletions(-)

New commits:
commit 76ad9b3451d82cf6b0079836fb5a1627677f4f83
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sun Aug 21 12:56:35 2016 -0400

    loolwsd: cleanup of LOOLSession
    
    Change-Id: Ib65e65c44b258c7ae4d4fbe68555f664900d21c9
    Reviewed-on: https://gerrit.libreoffice.org/28305
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index d9fcfc1..091fd48 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -50,25 +50,23 @@ using Poco::StringTokenizer;
 
 LOOLSession::LOOLSession(const std::string& id, const Kind kind,
                          std::shared_ptr<WebSocket> ws) :
+    _id(id),
     _kind(kind),
     _kindString(kind == Kind::ToClient ? "ToClient" :
                 kind == Kind::ToMaster ? "ToMaster" : "ToPrisoner"),
+    _name(_kindString + '-' + id),
     _ws(std::move(ws)),
-    _docPassword(""),
-    _haveDocPassword(false),
-    _isDocLoaded(false),
-    _isDocPasswordProtected(false),
-    _isCloseFrame(false),
     _disconnected(false),
     _isActive(true),
     _lastActivityTime(std::chrono::steady_clock::now()),
-    _isHeadless(false)
+    _isCloseFrame(false),
+    _docPassword(""),
+    _haveDocPassword(false),
+    _isDocPasswordProtected(false)
 {
     // Only a post request can have a null ws.
     if (_kind != Kind::ToClient)
         assert(_ws);
-
-    setId(id);
 }
 
 LOOLSession::~LOOLSession()
diff --git a/loolwsd/LOOLSession.hpp b/loolwsd/LOOLSession.hpp
index 96bbefb..71d1e9f 100644
--- a/loolwsd/LOOLSession.hpp
+++ b/loolwsd/LOOLSession.hpp
@@ -80,20 +80,13 @@ public:
 
     Kind getKind() const { return _kind; }
 
-    void setHeadless(bool val) { _isHeadless = val; }
-    bool isHeadless() const { return _isHeadless; }
+    bool isHeadless() const { return _ws == nullptr; }
 
 protected:
     LOOLSession(const std::string& id, const Kind kind,
                 std::shared_ptr<Poco::Net::WebSocket> ws);
     virtual ~LOOLSession();
 
-    void setId(const std::string& id)
-    {
-        _id = id;
-        _name = _kindString + '-' + id;
-    }
-
     /// Parses the options of the "load" command, shared between MasterProcessSession::loadDocument() and ChildProcessSession::loadDocument().
     void parseDocOptions(const Poco::StringTokenizer& tokens, int& part, std::string& timestamp);
 
@@ -131,16 +124,39 @@ protected:
     }
 
 private:
+
+    virtual bool _handleInput(const char *buffer, int length) = 0;
+
+private:
+
+    /// A session ID specific to an end-to-end connection (from user to lokit).
+    const std::string _id;
+
     // Our kind signifies to what we are connected to.
     const Kind _kind;
 
     // The kind cached as a string.
     const std::string _kindString;
 
+    /// A readable name that identifies our peer and ID.
+    const std::string _name;
+
     // In the master process, the websocket to the LOOL client or the jailed child process. In a
     // jailed process, the websocket to the parent.
     std::shared_ptr<Poco::Net::WebSocket> _ws;
 
+    /// True if we have been disconnected.
+    bool _disconnected;
+    /// True if the user is active, otherwise false (switched tabs).
+    bool _isActive;
+
+    std::chrono::steady_clock::time_point _lastActivityTime;
+
+    // Whether websocket received close frame.  Closing Handshake
+    std::atomic<bool> _isCloseFrame;
+
+    std::mutex _mutex;
+
 protected:
     // The actual URL, also in the child, even if the child never accesses that.
     std::string _docURL;
@@ -154,41 +170,11 @@ protected:
     // If password is provided or not
     bool _haveDocPassword;
 
-    // Whether document has been opened succesfuly
-    bool _isDocLoaded;
-
     // Whether document is password protected
     bool _isDocPasswordProtected;
 
     /// Document options: a JSON string, containing options (rendering, also possibly load in the future).
     std::string _docOptions;
-
-    // Whether websocket received close frame.  Closing Handshake
-    std::atomic<bool> _isCloseFrame;
-private:
-
-    virtual bool _handleInput(const char *buffer, int length) = 0;
-
-private:
-    /// A session ID specific to an end-to-end connection (from user to lokit).
-    std::string _id;
-    /// A readable name that identifies our peer and ID.
-    std::string _name;
-    /// True if we have been disconnected.
-    bool _disconnected;
-    /// True if the user is active, otherwise false (switched tabs).
-    bool _isActive;
-
-    std::chrono::steady_clock::time_point _lastActivityTime;
-
-    // Whether it is dummy session
-    // For eg. In case of convert-to requests (HTTP Post), there is no actual websocket
-    // connection on client side
-    bool _isHeadless;
-
-    std::mutex _mutex;
-
-    static constexpr auto InactivityThresholdMS = 120 * 1000;
 };
 
 template<typename charT, typename traits>
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index e6d9145..0d0c80a 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -402,8 +402,6 @@ private:
                     // Load the document.
                     std::shared_ptr<WebSocket> ws;
                     auto session = std::make_shared<ClientSession>(id, ws, docBroker, nullptr);
-                    // There is no actual client websocket connnection here
-                    session->setHeadless(true);
 
                     // Request the child to connect to us and add this session.
                     auto sessionsCount = docBroker->addSession(session);


More information about the Libreoffice-commits mailing list