wsd/DocumentBroker.cpp |   32 ++++++++++++++++++++++++++++++++
 wsd/DocumentBroker.hpp |    7 +++++++
 wsd/LOOLWSD.cpp        |   38 ++------------------------------------
 3 files changed, 41 insertions(+), 36 deletions(-)

New commits:
commit da944760a62a82c21a32017b9c04526ea00d3cbd
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Wed Mar 4 21:56:48 2020 +0000
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Thu Mar 5 17:10:36 2020 +0100

    re-factor: move createNewSession into DocumentBroker.
    
    Change-Id: I78f07a61fd79dfdd1c0d0ef21cf19218beec46ee
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/90025
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>

diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 74b827678..18bcdce63 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -1497,6 +1497,38 @@ void DocumentBroker::finalRemoveSession(const 
std::string& id)
     }
 }
 
+std::shared_ptr<ClientSession> DocumentBroker::createNewClientSession(const 
WebSocketHandler* ws,
+                                                                      const 
std::string& id,
+                                                                      const 
Poco::URI& uriPublic,
+                                                                      const 
bool isReadOnly,
+                                                                      const 
std::string& hostNoTrust)
+{
+    try
+    {
+        // Now we have a DocumentBroker and we're ready to process client 
commands.
+        if (ws)
+        {
+            const std::string statusReady = "statusindicator: ready";
+            LOG_TRC("Sending to Client [" << statusReady << "].");
+            ws->sendMessage(statusReady);
+        }
+
+        // In case of WOPI, if this session is not set as readonly, it might 
be set so
+        // later after making a call to WOPI host which tells us the 
permission on files
+        // (UserCanWrite param).
+        auto session = std::make_shared<ClientSession>(id, shared_from_this(), 
uriPublic, isReadOnly, hostNoTrust);
+        session->construct();
+
+        return session;
+    }
+    catch (const std::exception& exc)
+    {
+        LOG_WRN("Exception while preparing session [" << id << "]: " << 
exc.what());
+    }
+
+    return nullptr;
+}
+
 void DocumentBroker::addCallback(const SocketPoll::CallbackFn& fn)
 {
     _poll->addCallback(fn);
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index 5e3bea9aa..f56bd1e3f 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -243,6 +243,13 @@ public:
     /// Hard removes a session by ID, only for ClientSession.
     void finalRemoveSession(const std::string& id);
 
+    /// Create new client session
+    std::shared_ptr<ClientSession> createNewClientSession(const 
WebSocketHandler* ws,
+                                                          const std::string& 
id,
+                                                          const Poco::URI& 
uriPublic,
+                                                          const bool 
isReadOnly,
+                                                          const std::string& 
hostNoTrust);
+
     /// Thread safe termination of this broker if it has a lingering thread
     void joinThread();
 
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 61b9d8f09..eb35d601c 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -1780,40 +1780,6 @@ static std::shared_ptr<DocumentBroker> 
findOrCreateDocBroker(WebSocketHandler& w
     return docBroker;
 }
 
-static std::shared_ptr<ClientSession> createNewClientSession(const 
WebSocketHandler* ws,
-                                                             const 
std::string& id,
-                                                             const Poco::URI& 
uriPublic,
-                                                             const 
std::shared_ptr<DocumentBroker>& docBroker,
-                                                             const bool 
isReadOnly,
-                                                             const 
std::string& hostNoTrust)
-{
-    LOG_CHECK_RET(docBroker && "Null docBroker instance", nullptr);
-    try
-    {
-        // Now we have a DocumentBroker and we're ready to process client 
commands.
-        if (ws)
-        {
-            const std::string statusReady = "statusindicator: ready";
-            LOG_TRC("Sending to Client [" << statusReady << "].");
-            ws->sendMessage(statusReady);
-        }
-
-        // In case of WOPI, if this session is not set as readonly, it might 
be set so
-        // later after making a call to WOPI host which tells us the 
permission on files
-        // (UserCanWrite param).
-        auto session = std::make_shared<ClientSession>(id, docBroker, 
uriPublic, isReadOnly, hostNoTrust);
-        session->construct();
-
-        return session;
-    }
-    catch (const std::exception& exc)
-    {
-        LOG_WRN("Exception while preparing session [" << id << "]: " << 
exc.what());
-    }
-
-    return nullptr;
-}
-
 /// Handles the socket that the prisoner kit connected to WSD on.
 class PrisonerRequestDispatcher : public WebSocketHandler
 {
@@ -2850,8 +2816,8 @@ private:
                 const std::string hostNoTrust = (LOOLWSD::ServerName.empty() ? 
request.getHost() : LOOLWSD::ServerName);
 #endif
 
-                std::shared_ptr<ClientSession> clientSession = 
createNewClientSession(&ws, _id, uriPublic,
-                                                                               
       docBroker, isReadOnly, hostNoTrust);
+                std::shared_ptr<ClientSession> clientSession =
+                    docBroker->createNewClientSession(&ws, _id, uriPublic, 
isReadOnly, hostNoTrust);
                 if (clientSession)
                 {
                     // Transfer the client socket to the DocumentBroker when 
we get back to the poll:
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to