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

Ashod Nakashian ashod.nakashian at collabora.co.uk
Tue May 17 03:22:28 UTC 2016


 loolwsd/ClientSession.cpp        |   26 ++++++++++++++++++++++++--
 loolwsd/ClientSession.hpp        |   19 ++++++++++---------
 loolwsd/LOOLWSD.cpp              |    2 +-
 loolwsd/MasterProcessSession.cpp |   27 ++-------------------------
 loolwsd/MasterProcessSession.hpp |    8 +-------
 loolwsd/PrisonerSession.cpp      |   10 ++++++++++
 loolwsd/PrisonerSession.hpp      |   14 ++++----------
 7 files changed, 52 insertions(+), 54 deletions(-)

New commits:
commit 410123e2aa78a0c770175cffbdccf1300a28ec8f
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon May 16 21:03:45 2016 -0400

    loolwsd: MasterProcessSession splitting: moved dispatchChild
    
    ... and PrisonerSession ctor
    
    Change-Id: I4c3707d71eb308ab739e5c264be1905453f9d719
    Reviewed-on: https://gerrit.libreoffice.org/25047
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/ClientSession.cpp b/loolwsd/ClientSession.cpp
index 721a253..a1a6dca 100644
--- a/loolwsd/ClientSession.cpp
+++ b/loolwsd/ClientSession.cpp
@@ -37,9 +37,11 @@ ClientSession::ClientSession(const std::string& id,
                              std::shared_ptr<Poco::Net::WebSocket> ws,
                              std::shared_ptr<DocumentBroker> docBroker,
                              std::shared_ptr<BasicTileQueue> queue) :
-    MasterProcessSession(id, Kind::ToClient, ws, docBroker),
+    MasterProcessSession(id, Kind::ToClient, ws),
+    _docBroker(docBroker),
     _queue(queue),
-    _loadFailed(false)
+    _loadFailed(false),
+    _loadPart(-1)
 {
     Log::info("ClientSession ctor [" + getName() + "].");
 }
@@ -410,4 +412,24 @@ void ClientSession::sendCombinedTiles(const char* /*buffer*/, int /*length*/, St
     }
 }
 
+void ClientSession::dispatchChild()
+{
+    std::ostringstream oss;
+    oss << "load";
+    oss << " url=" << _docBroker->getPublicUri().toString();
+    oss << " jail=" << _docBroker->getJailedUri().toString();
+
+    if (_loadPart >= 0)
+        oss << " part=" + std::to_string(_loadPart);
+
+    if (_haveDocPassword)
+        oss << " password=" << _docPassword;
+
+    if (!_docOptions.empty())
+        oss << " options=" << _docOptions;
+
+    const auto loadRequest = oss.str();
+    forwardToPeer(loadRequest.c_str(), loadRequest.size());
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/loolwsd/ClientSession.hpp b/loolwsd/ClientSession.hpp
index dc9278b..976b9c6 100644
--- a/loolwsd/ClientSession.hpp
+++ b/loolwsd/ClientSession.hpp
@@ -64,6 +64,8 @@ public:
         _queue->put(message);
     }
 
+    std::shared_ptr<DocumentBroker> getDocumentBroker() const { return _docBroker; }
+
 private:
 
     virtual bool _handleInput(const char *buffer, int length) override;
@@ -78,8 +80,15 @@ private:
     void sendCombinedTiles(const char *buffer, int length, Poco::StringTokenizer& tokens);
     void sendFontRendering(const char *buffer, int length, Poco::StringTokenizer& tokens);
 
+    void dispatchChild();
+
 private:
 
+    std::shared_ptr<DocumentBroker> _docBroker;
+
+    /// The incoming message queue.
+    std::shared_ptr<BasicTileQueue> _queue;
+
     // If this document holds the edit lock.
     // An edit lock will only allow the current session to make edits,
     // while other session opening the same document can only see
@@ -89,23 +98,15 @@ private:
     /// Store URLs of completed 'save as' documents.
     MessageQueue _saveAsQueue;
 
-    /// The incoming message queue.
-    std::shared_ptr<BasicTileQueue> _queue;
-
     /// Marks if document loading failed.
     bool _loadFailed;
+    int _loadPart;
 
 #if 0
-    std::shared_ptr<DocumentBroker> getDocumentBroker() const { return _docBroker; }
-
     bool shutdownPeer(Poco::UInt16 statusCode, const std::string& message);
 
  private:
-    void dispatchChild();
     void forwardToPeer(const char *buffer, int length);
-
-    int _loadPart;
-    std::shared_ptr<DocumentBroker> _docBroker;
 #endif
 };
 
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 793f401..3e922b0 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -986,7 +986,7 @@ public:
             docBroker->load(jailId);
 
             auto ws = std::make_shared<WebSocket>(request, response);
-            auto session = std::make_shared<PrisonerSession>(sessionId, LOOLSession::Kind::ToPrisoner, ws, docBroker);
+            auto session = std::make_shared<PrisonerSession>(sessionId, ws, docBroker);
 
             // Connect the prison session to the client.
             docBroker->connectPeers(session);
diff --git a/loolwsd/MasterProcessSession.cpp b/loolwsd/MasterProcessSession.cpp
index 888e2ae..84c7717 100644
--- a/loolwsd/MasterProcessSession.cpp
+++ b/loolwsd/MasterProcessSession.cpp
@@ -33,11 +33,8 @@ using Poco::StringTokenizer;
 
 MasterProcessSession::MasterProcessSession(const std::string& id,
                                            const Kind kind,
-                                           std::shared_ptr<Poco::Net::WebSocket> ws,
-                                           std::shared_ptr<DocumentBroker> docBroker) :
-    LOOLSession(id, kind, ws),
-    _loadPart(-1),
-    _docBroker(docBroker)
+                                           std::shared_ptr<Poco::Net::WebSocket> ws) :
+    LOOLSession(id, kind, ws)
 {
     Log::info("MasterProcessSession ctor [" + getName() + "].");
 }
@@ -46,26 +43,6 @@ MasterProcessSession::~MasterProcessSession()
 {
 }
 
-void MasterProcessSession::dispatchChild()
-{
-    std::ostringstream oss;
-    oss << "load";
-    oss << " url=" << _docBroker->getPublicUri().toString();
-    oss << " jail=" << _docBroker->getJailedUri().toString();
-
-    if (_loadPart >= 0)
-        oss << " part=" + std::to_string(_loadPart);
-
-    if (_haveDocPassword)
-        oss << " password=" << _docPassword;
-
-    if (!_docOptions.empty())
-        oss << " options=" << _docOptions;
-
-    const auto loadRequest = oss.str();
-    forwardToPeer(loadRequest.c_str(), loadRequest.size());
-}
-
 void MasterProcessSession::forwardToPeer(const char *buffer, int length)
 {
     const auto message = getAbbreviatedMessage(buffer, length);
diff --git a/loolwsd/MasterProcessSession.hpp b/loolwsd/MasterProcessSession.hpp
index 9a59c21..bf860d9 100644
--- a/loolwsd/MasterProcessSession.hpp
+++ b/loolwsd/MasterProcessSession.hpp
@@ -24,12 +24,9 @@ class MasterProcessSession : public LOOLSession
  public:
     MasterProcessSession(const std::string& id,
                          const Kind kind,
-                         std::shared_ptr<Poco::Net::WebSocket> ws,
-                         std::shared_ptr<DocumentBroker> docBroker);
+                         std::shared_ptr<Poco::Net::WebSocket> ws);
     virtual ~MasterProcessSession();
 
-    std::shared_ptr<DocumentBroker> getDocumentBroker() const { return _docBroker; }
-
     bool shutdownPeer(Poco::UInt16 statusCode, const std::string& message);
 
  protected:
@@ -44,9 +41,6 @@ class MasterProcessSession : public LOOLSession
     // obvious have to be rethought when we add collaboration and there can be several LOOL clients
     // per document being edited (i.e., per child process).
     std::weak_ptr<MasterProcessSession> _peer;
-
-    int _loadPart;
-    std::shared_ptr<DocumentBroker> _docBroker;
 };
 
 #endif
diff --git a/loolwsd/PrisonerSession.cpp b/loolwsd/PrisonerSession.cpp
index 8b658a9..30e0f23 100644
--- a/loolwsd/PrisonerSession.cpp
+++ b/loolwsd/PrisonerSession.cpp
@@ -33,6 +33,16 @@ using namespace LOOLProtocol;
 using Poco::Path;
 using Poco::StringTokenizer;
 
+PrisonerSession::PrisonerSession(const std::string& id,
+                                 std::shared_ptr<Poco::Net::WebSocket> ws,
+                                 std::shared_ptr<DocumentBroker> docBroker) :
+    MasterProcessSession(id, Kind::ToPrisoner, ws),
+    _docBroker(docBroker),
+    _curPart(0)
+{
+    Log::info("ClientSession ctor [" + getName() + "].");
+}
+
 PrisonerSession::~PrisonerSession()
 {
     Log::info("~PrisonerSession dtor [" + getName() + "].");
diff --git a/loolwsd/PrisonerSession.hpp b/loolwsd/PrisonerSession.hpp
index 8d853b2..553d204 100644
--- a/loolwsd/PrisonerSession.hpp
+++ b/loolwsd/PrisonerSession.hpp
@@ -24,7 +24,9 @@ class ClientSession;
 class PrisonerSession final : public MasterProcessSession, public std::enable_shared_from_this<PrisonerSession>
 {
 public:
-    using MasterProcessSession::MasterProcessSession;
+    PrisonerSession(const std::string& id,
+                    std::shared_ptr<Poco::Net::WebSocket> ws,
+                    std::shared_ptr<DocumentBroker> docBroker);
 
     virtual ~PrisonerSession();
 
@@ -36,23 +38,15 @@ private:
 
 private:
 
+    std::shared_ptr<DocumentBroker> _docBroker;
     std::weak_ptr<ClientSession> _peer;
     int _curPart;
 
 #if 0
-    std::shared_ptr<DocumentBroker> getDocumentBroker() const { return _docBroker; }
-
-    std::shared_ptr<BasicTileQueue> getQueue() const { return _queue; }
-
     bool shutdownPeer(Poco::UInt16 statusCode, const std::string& message);
 
  private:
-    void dispatchChild();
     void forwardToPeer(const char *buffer, int length);
-
-    int _loadPart;
-    std::shared_ptr<DocumentBroker> _docBroker;
-    std::shared_ptr<BasicTileQueue> _queue;
 #endif
 };
 


More information about the Libreoffice-commits mailing list