loolwsd/DocumentBroker.cpp | 12 ++++++------ loolwsd/DocumentBroker.hpp | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 7 deletions(-)
New commits: commit 75c99ed9b6939f9ee0be68cec2d82572d63ac48c Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Tue Oct 11 18:22:51 2016 -0400 loolwsd: cleanup child process WS interface Change-Id: I30d74fc25434301145da292711fe5e33972ac876 Reviewed-on: https://gerrit.libreoffice.org/29936 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/DocumentBroker.cpp b/loolwsd/DocumentBroker.cpp index c562048..adadee2 100644 --- a/loolwsd/DocumentBroker.cpp +++ b/loolwsd/DocumentBroker.cpp @@ -405,7 +405,7 @@ size_t DocumentBroker::addSession(std::shared_ptr<ClientSession>& session) // Request a new session from the child kit. Log::debug("DocBroker to Child: " + aMessage.substr(0, aMessage.length() - 1)); - _childProcess->getWebSocket()->sendFrame(aMessage.data(), aMessage.size()); + _childProcess->sendTextFrame(aMessage); auto ret = _sessions.emplace(id, session); if (!ret.second) @@ -454,7 +454,7 @@ size_t DocumentBroker::removeSession(const std::string& id) // Let the child know the client has disconnected. const std::string msg("child-" + id + " disconnect"); - _childProcess->getWebSocket()->sendFrame(msg.data(), msg.size()); + _childProcess->sendTextFrame(msg); } return _sessions.size(); @@ -561,7 +561,7 @@ void DocumentBroker::handleTileRequest(TileDesc& tile, // Forward to child to render. Log::debug() << "Sending render request for tile (" << tile.getPart() << ',' << tile.getTilePosX() << ',' << tile.getTilePosY() << ")." << Log::end; const std::string request = "tile " + tile.serialize(); - _childProcess->getWebSocket()->sendFrame(request.data(), request.size()); + _childProcess->sendTextFrame(request); _debugRenderedTileCount++; } @@ -620,7 +620,7 @@ void DocumentBroker::handleTileCombinedRequest(TileCombined& tileCombined, // Forward to child to render. const auto req = newTileCombined.serialize("tilecombine"); Log::debug() << "Sending residual tilecombine: " << req << Log::end; - _childProcess->getWebSocket()->sendFrame(req.data(), req.size()); + _childProcess->sendTextFrame(req); } } @@ -632,7 +632,7 @@ void DocumentBroker::cancelTileRequests(const std::shared_ptr<ClientSession>& se if (!canceltiles.empty()) { Log::debug() << "Forwarding canceltiles request: " << canceltiles << Log::end; - _childProcess->getWebSocket()->sendFrame(canceltiles.data(), canceltiles.size()); + _childProcess->sendTextFrame(canceltiles); } } @@ -748,7 +748,7 @@ bool DocumentBroker::forwardToChild(const std::string& viewId, const char *buffe { const auto msg = "child-" + viewId + ' ' + message; Log::debug("DocBroker to Child: " + msg); - _childProcess->getWebSocket()->sendFrame(msg.data(), msg.size()); + _childProcess->sendTextFrame(msg); return true; } else diff --git a/loolwsd/DocumentBroker.hpp b/loolwsd/DocumentBroker.hpp index a1aa06d..5d0b414 100644 --- a/loolwsd/DocumentBroker.hpp +++ b/loolwsd/DocumentBroker.hpp @@ -87,7 +87,24 @@ public: } Poco::Process::PID getPid() const { return _pid; } - std::shared_ptr<Poco::Net::WebSocket> getWebSocket() const { return _ws; } + + /// Send a text payload to the child-process WS. + bool sendTextFrame(const std::string& data) + { + try + { + _ws->sendFrame(data.data(), data.size()); + return true; + } + catch (const std::exception& exc) + { + Log::error() << "Failed to send child [" << _pid << "] data [" + << data << "] due to: " << exc.what() << Log::end; + throw; + } + + return false; + } /// Check whether this child is alive and able to respond. bool isAlive() const _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits