loolwsd/ClientSession.cpp | 17 +---------------- loolwsd/LOOLSession.hpp | 22 ++++++++++++++++++++++ loolwsd/PrisonerSession.cpp | 16 +--------------- 3 files changed, 24 insertions(+), 31 deletions(-)
New commits: commit 7f62bb54fd07fad0dabd6ea52ba92dc827b1bbe5 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Fri May 20 17:42:14 2016 -0400 loolwsd: unified forwardToPeer Change-Id: Ib12626adad1ff3cf647d6a32f9b1eae35f794b2f Reviewed-on: https://gerrit.libreoffice.org/25238 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/ClientSession.cpp b/loolwsd/ClientSession.cpp index 32c7f67..c951181 100644 --- a/loolwsd/ClientSession.cpp +++ b/loolwsd/ClientSession.cpp @@ -409,22 +409,7 @@ void ClientSession::sendCombinedTiles(const char* /*buffer*/, int /*length*/, St void ClientSession::forwardToPeer(const char *buffer, int length) { - const auto message = getAbbreviatedMessage(buffer, length); - - auto peer = _peer.lock(); - if (!peer) - { - throw Poco::ProtocolException(getName() + ": no peer to forward to: [" + message + "]."); - } - - if (peer->isCloseFrame()) - { - Log::trace(getName() + ": peer began the closing handshake. Dropping forward message [" + message + "]."); - return; - } - - Log::trace(getName() + " -> " + peer->getName() + ": " + message); - peer->sendBinaryFrame(buffer, length); + LOOLSession::forwardToPeer(_peer, buffer, length); } bool ClientSession::shutdownPeer(Poco::UInt16 statusCode, const std::string& message) diff --git a/loolwsd/LOOLSession.hpp b/loolwsd/LOOLSession.hpp index c262e0d..cf75433 100644 --- a/loolwsd/LOOLSession.hpp +++ b/loolwsd/LOOLSession.hpp @@ -24,7 +24,9 @@ #include <Poco/Types.h> #include "MessageQueue.hpp" +#include "LOOLProtocol.hpp" #include "TileCache.hpp" +#include "Log.hpp" class LOOLSession { @@ -92,6 +94,26 @@ protected: _lastActivityTime = std::chrono::steady_clock::now(); } + template <typename T> + void forwardToPeer(T& p, const char *buffer, int length) + { + const auto message = LOOLProtocol::getAbbreviatedMessage(buffer, length); + + auto peer = p.lock(); + if (!peer) + { + throw Poco::ProtocolException(getName() + ": no peer to forward to: [" + message + "]."); + } + else if (peer->isCloseFrame()) + { + Log::trace(getName() + ": peer began the closing handshake. Dropping forward message [" + message + "]."); + return; + } + + Log::trace(getName() + " -> " + peer->getName() + ": " + message); + peer->sendBinaryFrame(buffer, length); + } + // Fields common to sessions in master and jailed processes: // Our kind signifies to what we are connected to. diff --git a/loolwsd/PrisonerSession.cpp b/loolwsd/PrisonerSession.cpp index 41ad29d..bac4b6b 100644 --- a/loolwsd/PrisonerSession.cpp +++ b/loolwsd/PrisonerSession.cpp @@ -225,21 +225,7 @@ bool PrisonerSession::_handleInput(const char *buffer, int length) void PrisonerSession::forwardToPeer(const char *buffer, int length) { - const auto message = getAbbreviatedMessage(buffer, length); - - auto peer = _peer.lock(); - if (!peer) - { - throw Poco::ProtocolException(getName() + ": no peer to forward to: [" + message + "]."); - } - else if (peer->isCloseFrame()) - { - Log::trace(getName() + ": peer began the closing handshake. Dropping forward message [" + message + "]."); - return; - } - - Log::trace(getName() + " -> " + peer->getName() + ": " + message); - peer->sendBinaryFrame(buffer, length); + LOOLSession::forwardToPeer(_peer, buffer, length); } bool PrisonerSession::shutdownPeer(Poco::UInt16 statusCode, const std::string& message) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits