loolwsd/LOOLBroker.cpp | 26 ++++++++------------------ loolwsd/LOOLKit.cpp | 19 ++++++------------- 2 files changed, 14 insertions(+), 31 deletions(-)
New commits: commit 53bff1f1ca5e7a310e74123dc736e1ac8d37f8c2 Author: Ashod Nakashian <[email protected]> Date: Sun Jan 3 13:25:55 2016 -0500 loolwsd: fused setting the url and loading a document Change-Id: Ia85fa5e5550c7cc8479e4a368cadc77198a30191 Reviewed-on: https://gerrit.libreoffice.org/21094 Reviewed-by: Ashod Nakashian <[email protected]> Tested-by: Ashod Nakashian <[email protected]> diff --git a/loolwsd/LOOLBroker.cpp b/loolwsd/LOOLBroker.cpp index 31c114b..169e725 100644 --- a/loolwsd/LOOLBroker.cpp +++ b/loolwsd/LOOLBroker.cpp @@ -156,8 +156,9 @@ class PipeRunnable: public Runnable { public: PipeRunnable() + : _pStart(nullptr), + _pEnd(nullptr) { - _pStart = _pEnd = nullptr; } ssize_t getResponseLine(int nPipeReader, std::string& aLine) @@ -211,16 +212,10 @@ public: return nBytes; } - ssize_t createThread(Process::PID nPID, const std::string& aTID) + ssize_t createThread(Process::PID nPID, const std::string& aTID, const std::string& aURL) { std::string aResponse; - std::string aMessage = "thread " + aTID + "\r\n"; - return sendMessage(_childProcesses[nPID], aMessage); - } - - ssize_t updateURL(Process::PID nPID, const std::string& aURL) - { - std::string aMessage = "url " + aURL + "\r\n"; + std::string aMessage = "thread " + aTID + " " + aURL + "\r\n"; return sendMessage(_childProcesses[nPID], aMessage); } @@ -293,7 +288,7 @@ public: { Log::debug("Cache found URL [" + aURL + "] hosted on child [" + std::to_string(aIterURL->second) + "]. Creating view for thread [" + aTID + "]."); - if (createThread(aIterURL->second, aTID) < 0) + if (createThread(aIterURL->second, aTID, aURL) < 0) Log::error("Cache: Error creating thread."); return; @@ -308,7 +303,7 @@ public: { Log::debug("Search found URL [" + aURL + "] hosted by child [" + std::to_string(nPID) + "]. Creating view for thread [" + aTID + "]."); - if (createThread(nPID, aTID) < 0) + if (createThread(nPID, aTID, aURL) < 0) Log::error("Search: Error creating thread."); else _cacheURL[aURL] = nPID; @@ -321,13 +316,8 @@ public: { const auto aItem = _emptyURL.front(); Log::trace("No child found for URL [" + aURL + "]."); - if (updateURL(aItem, aURL) < 0) - { - Log::error("New: Error update URL."); - return; - } - if (createThread(aItem, aTID) < 0) + if (createThread(aItem, aTID, aURL) < 0) { Log::error("New: Error creating thread."); return; @@ -361,7 +351,7 @@ public: pStart = aBuffer; pEnd = aBuffer; - static const std::string thread_name = "broker_pipe_reader"; + static const std::string thread_name = "brk_pipe_reader"; #ifdef __linux if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0) Log::error("Cannot set thread name to " + thread_name + "."); diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp index 142f935..a1917e5 100644 --- a/loolwsd/LOOLKit.cpp +++ b/loolwsd/LOOLKit.cpp @@ -640,7 +640,6 @@ void run_lok_main(const std::string &loSubPath, const std::string& childId, cons char* pStart = nullptr; char* pEnd = nullptr; - std::string aURL; std::map<std::string, std::shared_ptr<Document>> _documents; assert(!childId.empty()); @@ -760,20 +759,14 @@ void run_lok_main(const std::string &loSubPath, const std::string& childId, cons else if (tokens[0] == "thread") { const std::string& sessionId = tokens[1]; - Log::debug("Thread request for [" + sessionId + "]"); + const std::string& url = tokens[2]; + Log::debug("Thread request for session [" + sessionId + "], url: [" + url + "]."); - //FIXME: for now we expect only one document per process. - assert(_documents.size() == 1); - assert(_documents[aURL]); + auto it = _documents.lower_bound(url); + if (it == _documents.end()) + it = _documents.emplace_hint(it, url, std::make_shared<Document>(loKit.get(), childId, url)); - _documents[aURL]->createSession(sessionId); - } - else if (tokens[0] == "url") - { - // When multi-documents per-process is supported - // this will need to move to search or thread. - aURL = tokens[1]; - _documents.emplace(aURL, std::make_shared<Document>(loKit.get(), childId, aURL)); + it->second->createSession(sessionId); } else { _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
