common/Session.cpp | 2 +- common/Session.hpp | 2 +- kit/Kit.cpp | 4 ++-- net/WebSocketHandler.hpp | 28 ++++++++-------------------- wsd/DocumentBroker.cpp | 4 ++-- wsd/LOOLWSD.cpp | 2 +- 6 files changed, 15 insertions(+), 27 deletions(-)
New commits: commit f70e627795b09522d61185ac38d6ecdced9aca23 Author: Michael Meeks <michael.me...@collabora.com> AuthorDate: Thu Mar 5 18:55:00 2020 +0000 Commit: Michael Meeks <michael.me...@collabora.com> CommitDate: Thu Mar 5 20:28:48 2020 +0100 WebSocket - simplify handleMessage for now. WebSocketHandler handles this complexity for us now, and for the forseeable future. Simplify to prepare for larger re-factor. Change-Id: I73b919885adc358cb6502a13492cdac85c34459c Reviewed-on: https://gerrit.libreoffice.org/c/online/+/90059 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Michael Meeks <michael.me...@collabora.com> diff --git a/common/Session.cpp b/common/Session.cpp index a0cdabe41..3e15330e9 100644 --- a/common/Session.cpp +++ b/common/Session.cpp @@ -214,7 +214,7 @@ void Session::shutdown(const WebSocketHandler::StatusCodes statusCode, const std WebSocketHandler::shutdown(statusCode, statusMessage); } -void Session::handleMessage(bool /*fin*/, WSOpCode /*code*/, std::vector<char> &data) +void Session::handleMessage(const std::vector<char> &data) { try { diff --git a/common/Session.hpp b/common/Session.hpp index 093234a2d..ec552f9d7 100644 --- a/common/Session.hpp +++ b/common/Session.hpp @@ -92,7 +92,7 @@ public: return (buffer != nullptr ? sendTextFrame(buffer, std::strlen(buffer)) : false); } - virtual void handleMessage(bool fin, WSOpCode code, std::vector<char> &data) override; + virtual void handleMessage(const std::vector<char> &data) override; /// Invoked when we want to disconnect a session. virtual void disconnect(); diff --git a/kit/Kit.cpp b/kit/Kit.cpp index 883efa6fc..188e95586 100644 --- a/kit/Kit.cpp +++ b/kit/Kit.cpp @@ -1802,7 +1802,7 @@ private: vect.assign(data, data + size); // TODO this is probably wrong... - session->handleMessage(/* fin = */ false, WSOpCode::Binary, vect); + session->handleMessage(vect); return true; } } @@ -2093,7 +2093,7 @@ public: } protected: - void handleMessage(bool /*fin*/, WSOpCode /*code*/, std::vector<char>& data) override + void handleMessage(const std::vector<char>& data) override { std::string message(data.data(), data.size()); diff --git a/net/WebSocketHandler.hpp b/net/WebSocketHandler.hpp index f18927a22..130f81b69 100644 --- a/net/WebSocketHandler.hpp +++ b/net/WebSocketHandler.hpp @@ -39,7 +39,6 @@ private: #if !MOBILEAPP bool _isMasking; bool _inFragmentBlock; - bool _isManualDefrag; #endif protected: @@ -62,7 +61,7 @@ public: /// defragmentation should be handled inside message handler (true) or the message handler /// should be called after all fragments of a message were received and the message /// was defragmented (false). - WebSocketHandler(bool isClient = false, bool isMasking = true, bool isManualDefrag = false) + WebSocketHandler(bool isClient = false, bool isMasking = true) : _lastPingSentTime(std::chrono::steady_clock::now()) , _pingTimeUs(0) , _shuttingDown(false) @@ -70,7 +69,6 @@ public: #if !MOBILEAPP , _isMasking(isClient && isMasking) , _inFragmentBlock(false) - , _isManualDefrag(isManualDefrag) #endif { } @@ -91,7 +89,6 @@ public: #if !MOBILEAPP , _isMasking(false) , _inFragmentBlock(false) - , _isManualDefrag(false) #endif { upgradeToWebSocket(request); @@ -367,27 +364,18 @@ public: if (fin) { - //If is final fragment then process the accumulated message. - handleMessage(fin, code, _wsPayload); + // If is final fragment then process the accumulated message. + handleMessage(_wsPayload); _inFragmentBlock = false; } else { - if (_isManualDefrag) - { - //If the user wants to process defragmentation on its own then let him process it. - handleMessage(fin, code, _wsPayload); - _inFragmentBlock = true; - } - else - { - _inFragmentBlock = true; - //If is not final fragment then wait for next fragment. - return false; - } + _inFragmentBlock = true; + // If is not final fragment then wait for next fragment. + return false; } #else - handleMessage(true, WSOpCode::Binary, _wsPayload); + handleMessage(_wsPayload); #endif @@ -627,7 +615,7 @@ protected: } /// To be overriden to handle the websocket messages the way you need. - virtual void handleMessage(bool /*fin*/, WSOpCode /*code*/, std::vector<char> &/*data*/) + virtual void handleMessage(const std::vector<char> &/*data*/) { } diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index b89fc8439..e6a95c050 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -2284,7 +2284,7 @@ bool ConvertToBroker::startConversion(SocketDisposition &disposition, const std: Poco::URI::encode(docBroker->getPublicUri().getPath(), "", encodedFrom); const std::string _load = "load url=" + encodedFrom; std::vector<char> loadRequest(_load.begin(), _load.end()); - docBroker->_clientSession->handleMessage(true, WSOpCode::Text, loadRequest); + docBroker->_clientSession->handleMessage(loadRequest); // Save is done in the setLoaded }); @@ -2340,7 +2340,7 @@ void ConvertToBroker::setLoaded() // Send the save request ... std::vector<char> saveasRequest(saveAsCmd.begin(), saveAsCmd.end()); - _clientSession->handleMessage(true, WSOpCode::Text, saveasRequest); + _clientSession->handleMessage(saveasRequest); } std::vector<std::shared_ptr<ClientSession>> DocumentBroker::getSessionsTestOnlyUnsafe() diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index eb35d601c..8ff0564e3 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -1920,7 +1920,7 @@ private: } /// Prisoner websocket fun ... (for now) - virtual void handleMessage(bool /*fin*/, WSOpCode /* code */, std::vector<char> &data) override + virtual void handleMessage(const std::vector<char> &data) override { if (UnitWSD::get().filterChildMessage(data)) return; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits