wsd/PrisonerSession.cpp | 32 +++++++++++++++++++------------- wsd/PrisonerSession.hpp | 2 +- 2 files changed, 20 insertions(+), 14 deletions(-)
New commits: commit 8c34244285731fa7554479694aed0beaaca2ac6e Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sat Jan 21 20:13:09 2017 -0500 wsd: forwardToPeer now takes pre-constructed Message Change-Id: I58acbeb6d27fbc9b99434c2743f69a4faa3a048b Reviewed-on: https://gerrit.libreoffice.org/33430 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/wsd/PrisonerSession.cpp b/wsd/PrisonerSession.cpp index 55db938..d05a9a6 100644 --- a/wsd/PrisonerSession.cpp +++ b/wsd/PrisonerSession.cpp @@ -108,7 +108,10 @@ bool PrisonerSession::_handleInput(const char *buffer, int length) errorKind == "passwordrequired:to-modify" || errorKind == "wrongpassword") { - forwardToPeer(peer, buffer, length, false); + const auto payload = std::make_shared<Message>(buffer, length, + Message::Dir::Out, + Message::Type::Text); + forwardToPeer(peer, payload); LOG_WRN("Document load failed: " << errorKind); return false; } @@ -175,7 +178,10 @@ bool PrisonerSession::_handleInput(const char *buffer, int length) _docBroker->setLoaded(); // Forward the status response to the client. - return forwardToPeer(peer, buffer, length, false); + const auto payload = std::make_shared<Message>(buffer, length, + Message::Dir::Out, + Message::Type::Text); + return forwardToPeer(peer, payload); } else if (tokens[0] == "commandvalues:") { @@ -242,8 +248,10 @@ bool PrisonerSession::_handleInput(const char *buffer, int length) getTokenString(tokens[2], "char", text); assert(firstLine.size() < static_cast<std::string::size_type>(length)); _docBroker->tileCache().saveRendering(font+text, "font", buffer + firstLine.size() + 1, length - firstLine.size() - 1); - forwardToPeer(peer, buffer, length, true); - return true; + const auto payload = std::make_shared<Message>(buffer, length, + Message::Dir::Out, + Message::Type::Binary); + return forwardToPeer(peer, payload); } } else @@ -257,14 +265,17 @@ bool PrisonerSession::_handleInput(const char *buffer, int length) const bool isBinary = buffer[length - 1] != '}' && firstLine.find('{') == std::string::npos; // Forward everything else. - forwardToPeer(peer, buffer, length, isBinary); - return true; + const auto payload = std::make_shared<Message>(buffer, length, + Message::Dir::Out, + isBinary ? Message::Type::Binary + : Message::Type::Text); + return forwardToPeer(peer, payload); } bool PrisonerSession::forwardToPeer(const std::shared_ptr<ClientSession>& clientSession, - const char* buffer, int length, const bool binary) + const std::shared_ptr<Message>& payload) { - const auto message = LOOLProtocol::getAbbreviatedMessage(buffer, length); + const auto& message = payload->abbr(); if (clientSession->isCloseFrame()) { @@ -280,11 +291,6 @@ bool PrisonerSession::forwardToPeer(const std::shared_ptr<ClientSession>& client } LOG_TRC(getName() << " -> " << clientSession->getName() << ": " << message); - - auto payload = std::make_shared<Message>(buffer, length, - Message::Dir::Out, - binary ? Message::Type::Binary - : Message::Type::Text); clientSession->enqueueSendMessage(payload); return true; diff --git a/wsd/PrisonerSession.hpp b/wsd/PrisonerSession.hpp index 5a333a2..12d607c 100644 --- a/wsd/PrisonerSession.hpp +++ b/wsd/PrisonerSession.hpp @@ -35,7 +35,7 @@ private: virtual bool _handleInput(const char* buffer, int length) override; bool forwardToPeer(const std::shared_ptr<ClientSession>& clientSession, - const char* buffer, int length, const bool binary); + const std::shared_ptr<Message>& payload); private: std::shared_ptr<DocumentBroker> _docBroker; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits