loolwsd/ChildSession.cpp | 14 +------------- loolwsd/ClientSession.cpp | 15 +-------------- loolwsd/ClientSession.hpp | 1 - loolwsd/DocumentBroker.cpp | 33 --------------------------------- loolwsd/DocumentBroker.hpp | 5 ----- loolwsd/PrisonerSession.cpp | 7 +------ loolwsd/protocol.txt | 18 ------------------ loolwsd/test/httpwstest.cpp | 10 +--------- 8 files changed, 4 insertions(+), 99 deletions(-)
New commits: commit ef4ca0507a81a58786f15841d11830e90d4d7644 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Tue Sep 20 09:46:39 2016 +0200 loolwsd: remove takeedit and editlock commands As a follow-up to commit 77e219ceff24dd4a566dfdf4f82a6929fe9a563e (loleaflet: Kill editlock code, completely, 2016-09-20). Change-Id: I48a58bb738c0939f99d220eca7a8fd3f4c3debe4 diff --git a/loolwsd/ChildSession.cpp b/loolwsd/ChildSession.cpp index 17cf397..a8a1a26 100644 --- a/loolwsd/ChildSession.cpp +++ b/loolwsd/ChildSession.cpp @@ -199,8 +199,7 @@ bool ChildSession::_handleInput(const char *buffer, int length) tokens[0] == "resetselection" || tokens[0] == "saveas" || tokens[0] == "useractive" || - tokens[0] == "userinactive" || - tokens[0] == "editlock:"); + tokens[0] == "userinactive"); if (tokens[0] == "clientzoom") { @@ -266,17 +265,6 @@ bool ChildSession::_handleInput(const char *buffer, int length) { setIsActive(false); } - else if (tokens[0] == "editlock:") - { - // Nothing for us to do but to let the - // client know about the edit lock state. - // Yes, this is echoed back because it's better - // to do this on each child's queue and thread - // than for WSD to potentially stall while notifying - // each client with the edit lock state. - Log::trace("Echoing back [" + firstLine + "]."); - return sendTextFrame(firstLine); - } else { assert(false && "Unknown command token."); diff --git a/loolwsd/ClientSession.cpp b/loolwsd/ClientSession.cpp index b493c58..6465519 100644 --- a/loolwsd/ClientSession.cpp +++ b/loolwsd/ClientSession.cpp @@ -93,12 +93,7 @@ bool ClientSession::_handleInput(const char *buffer, int length) return true; } - if (!isReadOnly() && tokens[0] == "takeedit") - { - _docBroker->takeEditLock(getId()); - return true; - } - else if (tokens[0] == "load") + if (tokens[0] == "load") { if (_docURL != "") { @@ -257,14 +252,6 @@ bool ClientSession::getStatus(const char *buffer, int length) return forwardToPeer(_peer, buffer, length, false); } -bool ClientSession::setEditLock() -{ - // Update the sate and forward to child. - const std::string msg = "editlock: 1"; - Log::debug("Forwarding [" + msg + "] to set editlock to 1."); - return forwardToPeer(_peer, msg.data(), msg.size(), false); -} - bool ClientSession::getCommandValues(const char *buffer, int length, StringTokenizer& tokens) { std::string command; diff --git a/loolwsd/ClientSession.hpp b/loolwsd/ClientSession.hpp index a285efe..237fe13 100644 --- a/loolwsd/ClientSession.hpp +++ b/loolwsd/ClientSession.hpp @@ -27,7 +27,6 @@ public: virtual ~ClientSession(); - bool setEditLock(); bool isReadOnly() const { return _isReadOnly; } void setPeer(const std::shared_ptr<PrisonerSession>& peer) { _peer = peer; } diff --git a/loolwsd/DocumentBroker.cpp b/loolwsd/DocumentBroker.cpp index 5ef3f60..6a1c037 100644 --- a/loolwsd/DocumentBroker.cpp +++ b/loolwsd/DocumentBroker.cpp @@ -112,7 +112,6 @@ DocumentBroker::DocumentBroker() : _cursorHeight(0), _isLoaded(false), _isModified(false), - _isEditLockHeld(false), _tileVersion(0) { Log::info("Empty DocumentBroker (marked to destroy) created."); @@ -136,7 +135,6 @@ DocumentBroker::DocumentBroker(const Poco::URI& uriPublic, _cursorHeight(0), _isLoaded(false), _isModified(false), - _isEditLockHeld(false), _tileVersion(0) { assert(!_docKey.empty()); @@ -381,18 +379,6 @@ std::string DocumentBroker::getJailRoot() const return Poco::Path(_childRoot, _jailId).toString(); } -void DocumentBroker::takeEditLock(const std::string& id) -{ - Log::debug("Session " + id + " taking the editing lock."); - std::lock_guard<std::mutex> lock(_mutex); - - // Forward to all children. - for (auto& it: _sessions) - { - it.second->setEditLock(); - } -} - size_t DocumentBroker::addSession(std::shared_ptr<ClientSession>& session) { const auto id = session->getId(); @@ -414,11 +400,6 @@ size_t DocumentBroker::addSession(std::shared_ptr<ClientSession>& session) { Log::debug("Adding a readonly session [" + id + "]"); } - else if (!_isEditLockHeld) - { - Log::debug("Giving editing lock to the first editable session [" + id + "]."); - _isEditLockHeld = true; - } // Below values are recalculated when startDestroy() is called (before destroying the // document). It is safe to reset their values to their defaults whenever a new session is added @@ -453,20 +434,6 @@ size_t DocumentBroker::removeSession(const std::string& id) if (it != _sessions.end()) { _sessions.erase(it); - - // pass the edit lock to first non-readonly session in map - bool editLockGiven = false; - for (auto& session: _sessions) - { - if (!session.second->isReadOnly()) - { - session.second->setEditLock(); - editLockGiven = true; - break; - } - } - - _isEditLockHeld = editLockGiven; } return _sessions.size(); diff --git a/loolwsd/DocumentBroker.hpp b/loolwsd/DocumentBroker.hpp index 301f896..c8a46b7 100644 --- a/loolwsd/DocumentBroker.hpp +++ b/loolwsd/DocumentBroker.hpp @@ -194,10 +194,6 @@ public: std::string getJailRoot() const; - /// Ignore input events from all web socket sessions - /// except this one - void takeEditLock(const std::string& id); - /// Add a new session. Returns the new number of sessions. size_t addSession(std::shared_ptr<ClientSession>& session); /// Connect a prison session to its client peer. @@ -264,7 +260,6 @@ private: mutable std::mutex _mutex; std::condition_variable _saveCV; std::mutex _saveMutex; - std::atomic<bool> _isEditLockHeld; /// Versioning is used to prevent races between /// painting and invalidation. diff --git a/loolwsd/PrisonerSession.cpp b/loolwsd/PrisonerSession.cpp index 5a924bc..3844974 100644 --- a/loolwsd/PrisonerSession.cpp +++ b/loolwsd/PrisonerSession.cpp @@ -185,12 +185,7 @@ bool PrisonerSession::_handleInput(const char *buffer, int length) _docBroker->setLoaded(); // Forward the status response to the client. - forwardToPeer(_peer, buffer, length, isBinary); - - // And let clients know if they hold the edit lock. - std::string message = "editlock: 1"; - Log::debug("Forwarding [" + message + "] in response to status."); - return forwardToPeer(_peer, message.c_str(), message.size(), isBinary); + return forwardToPeer(_peer, buffer, length, isBinary); } else if (tokens[0] == "commandvalues:") { diff --git a/loolwsd/protocol.txt b/loolwsd/protocol.txt index 3639484..bf1a8ea 100644 --- a/loolwsd/protocol.txt +++ b/loolwsd/protocol.txt @@ -143,13 +143,6 @@ clientvisiblearea x=<x> y=<y> width=<width> height=<height> Invokes lok::Document::setClientVisibleArea(). -takeedit - - Request for an edit lock. If successful, client will receive an 'editlock: 1' - message meaning editlock is granted. - - See 'editlock:' message in server -> client. - useractive Sent when the user regains focus or clicks within the active area to @@ -210,17 +203,6 @@ downloadas: jail=<jail directory> dir=<a tmp dir> name=<name> port=<port> The client should then request http://server:port/jail/dir/name in order to download the document -editlock: <1 or 0> - - Informs the client of any change in ownership of edit lock. A value of '1' - means client can edit the document, and '0' means that client can only view - the document. This message always follows the 'status:' message after a - document is loaded, so that client has this information as soon as it loads - the document. - - Note that only one client can have the editlock at a time and - others can only view. - error: cmd=<command> kind=<kind> [code=<error_code>] <freeErrorText> diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp index bf4eee1..e1096da 100644 --- a/loolwsd/test/httpwstest.cpp +++ b/loolwsd/test/httpwstest.cpp @@ -361,12 +361,6 @@ void HTTPWSTest::loadDoc(const std::string& documentURL) // Might be too strict, consider something flexible instread. CPPUNIT_ASSERT_EQUAL(std::string("type=text parts=1 current=0 width=12808 height=16408 viewid=0"), status); } - else if (msg.find("editlock") == 0) - { - // First session always gets the lock. - CPPUNIT_ASSERT_EQUAL(std::string("editlock: 1"), msg); - return false; - } return true; }); @@ -439,8 +433,7 @@ void HTTPWSTest::testBadLoad() // For some reason the server claims a client has the 'edit lock' even if no // document has been successfully loaded - if (LOOLProtocol::getFirstToken(buffer, n) == "editlock:" || - LOOLProtocol::getFirstToken(buffer, n) == "statusindicator:") + if (LOOLProtocol::getFirstToken(buffer, n) == "statusindicator:") continue; CPPUNIT_ASSERT_EQUAL(std::string("error: cmd=status kind=nodocloaded"), line); @@ -1019,7 +1012,6 @@ void HTTPWSTest::testInactiveClient() CPPUNIT_ASSERT_MESSAGE("unexpected message: " + msg, token == "addview:" || token == "cursorvisible:" || - token == "editlock:" || token == "graphicselection:" || token == "graphicviewselection:" || token == "invalidatecursor:" || _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits