loolwsd/Admin.cpp | 2 +- loolwsd/DocumentBroker.cpp | 5 +++-- loolwsd/IoUtil.cpp | 27 ++++++++++++++------------- loolwsd/IoUtil.hpp | 1 + loolwsd/LOOLKit.cpp | 4 ++-- loolwsd/LOOLWSD.cpp | 2 +- 6 files changed, 22 insertions(+), 19 deletions(-)
New commits: commit 853135decd123e1bbd521e7369378056caaabd56 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sun Nov 13 22:23:04 2016 -0500 loolwsd: SocketProcessor can be named and name used in logs Change-Id: I599b6f7308690b49a0e9ed3c23b88dbcb2ed8848 Reviewed-on: https://gerrit.libreoffice.org/30830 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/Admin.cpp b/loolwsd/Admin.cpp index 9fc3535..560acbe 100644 --- a/loolwsd/Admin.cpp +++ b/loolwsd/Admin.cpp @@ -213,7 +213,7 @@ void AdminRequestHandler::handleWSRequests(HTTPServerRequest& request, HTTPServe model.subscribe(_sessionId, _adminWs); } - IoUtil::SocketProcessor(_adminWs, + IoUtil::SocketProcessor(_adminWs, "admin", [this](const std::vector<char>& payload) { return adminCommandHandler(payload); diff --git a/loolwsd/DocumentBroker.cpp b/loolwsd/DocumentBroker.cpp index 51badf4..a71d405 100644 --- a/loolwsd/DocumentBroker.cpp +++ b/loolwsd/DocumentBroker.cpp @@ -37,9 +37,10 @@ using Poco::StringTokenizer; void ChildProcess::socketProcessor() { - Util::setThreadName("child_ws_" + std::to_string(_pid)); + const auto name = "docbrk_ws_" + std::to_string(_pid); + Util::setThreadName(name); - IoUtil::SocketProcessor(_ws, + IoUtil::SocketProcessor(_ws, name, [this](const std::vector<char>& payload) { const auto message = LOOLProtocol::getAbbreviatedMessage(payload); diff --git a/loolwsd/IoUtil.cpp b/loolwsd/IoUtil.cpp index ff88892..4368af1 100644 --- a/loolwsd/IoUtil.cpp +++ b/loolwsd/IoUtil.cpp @@ -41,11 +41,12 @@ namespace IoUtil // Synchronously process LOOLWebSocket requests and dispatch to handler. // Handler returns false to end. void SocketProcessor(const std::shared_ptr<LOOLWebSocket>& ws, + const std::string& name, const std::function<bool(const std::vector<char>&)>& handler, const std::function<void()>& closeFrame, const std::function<bool()>& stopPredicate) { - LOG_INF("SocketProcessor starting."); + LOG_INF("SocketProcessor [" << name << "] starting."); // Timeout given is in microseconds. static const Poco::Timespan waitTime(POLL_TIMEOUT_MS * 1000); @@ -65,7 +66,7 @@ void SocketProcessor(const std::shared_ptr<LOOLWebSocket>& ws, stop = stopPredicate(); if (stop) { - LOG_INF("Termination flagged. Finishing."); + LOG_INF("SocketProcessor [" << name << "]: Stop flagged."); break; } @@ -85,13 +86,13 @@ void SocketProcessor(const std::shared_ptr<LOOLWebSocket>& ws, } catch (const Poco::TimeoutException&) { - LOG_DBG("SocketProcessor: Spurious TimeoutException, ignored"); + LOG_DBG("SocketProcessor [" << name << "]: Spurious TimeoutException, ignored"); continue; } if (n <= 0 || ((flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_CLOSE)) { - LOG_WRN("Connection closed."); + LOG_WRN("SocketProcessor [" << name << "]: Connection closed."); closeFrame(); break; } @@ -103,14 +104,14 @@ void SocketProcessor(const std::shared_ptr<LOOLWebSocket>& ws, { // One WS message split into multiple frames. // TODO: Is this even possible with Poco if we never construct such messages outselves? - LOG_WRN("Receiving multi-parm frame."); + LOG_WRN("SocketProcessor [" << name << "]: Receiving multi-parm frame."); while (true) { char buffer[READ_BUFFER_SIZE * 10]; n = ws->receiveFrame(buffer, sizeof(buffer), flags); if (n <= 0 || (flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_CLOSE) { - LOG_WRN("Connection closed while reading multiframe message."); + LOG_WRN("SocketProcessor [" << name << "]: Connection closed while reading multiframe message."); closeFrame(); break; } @@ -132,10 +133,10 @@ void SocketProcessor(const std::shared_ptr<LOOLWebSocket>& ws, if (tokens.count() == 2 && tokens[0] == "nextmessage:" && LOOLProtocol::getTokenInteger(tokens[1], "size", size) && size > 0) { - LOG_TRC("Getting large message of " << size << " bytes."); + LOG_TRC("SocketProcessor [" << name << "]: Getting large message of " << size << " bytes."); if (size > MAX_MESSAGE_SIZE) { - LOG_ERR("Large-message size (" << size << ") over limit or invalid."); + LOG_ERR("SocketProcessor [" << name << "]: Large-message size (" << size << ") over limit or invalid."); } else { @@ -148,7 +149,7 @@ void SocketProcessor(const std::shared_ptr<LOOLWebSocket>& ws, if (n <= 0 || (flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_CLOSE) { closeFrame(); - LOG_WRN("Connection closed."); + LOG_WRN("SocketProcessor [" << name << "]: Connection closed."); break; } @@ -158,25 +159,25 @@ void SocketProcessor(const std::shared_ptr<LOOLWebSocket>& ws, if (!success) { - LOG_INF("Socket handler flagged to finish."); + LOG_INF("SocketProcessor [" << name << "]: Handler flagged to finish."); break; } } } catch (const std::exception& exc) { - LOG_ERR("SocketProcessor: exception: " << exc.what()); + LOG_ERR("SocketProcessor [" << name << "]: Exception: " << exc.what()); } if ((flags & WebSocket::FRAME_OP_BITMASK) != WebSocket::FRAME_OP_CLOSE && n > 0 && payload.size() > 0) { std::string msg; Poco::URI::encode(std::string(payload.data(), payload.size()), "", msg); - LOG_WRN("Last message (" << payload.size() << + LOG_WRN("SocketProcessor [" << name << "]: Last message (" << payload.size() << " bytes) will not be processed: [" << msg << "]."); } - LOG_INF("SocketProcessor finished. stop: " << (stop ? "true" : "false") << + LOG_INF("SocketProcessor [" << name << "] finished. stop: " << (stop ? "true" : "false") << ", n: " << n << ", payload size: " << payload.size() << ", flags: " << std::hex << flags); } diff --git a/loolwsd/IoUtil.hpp b/loolwsd/IoUtil.hpp index fca3107..6a81f19 100644 --- a/loolwsd/IoUtil.hpp +++ b/loolwsd/IoUtil.hpp @@ -22,6 +22,7 @@ namespace IoUtil /// Synchronously process LOOLWebSocket requests and dispatch to handler. /// Handler returns false to end. void SocketProcessor(const std::shared_ptr<LOOLWebSocket>& ws, + const std::string& name, const std::function<bool(const std::vector<char>&)>& handler, const std::function<void()>& closeFrame, const std::function<bool()>& stopPredicate); diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp index 17bd15c..435b8a7 100644 --- a/loolwsd/LOOLKit.cpp +++ b/loolwsd/LOOLKit.cpp @@ -1467,8 +1467,8 @@ void lokit_main(const std::string& childRoot, auto queue = std::make_shared<TileQueue>(); - const std::string socketName = "ChildControllerWS"; - IoUtil::SocketProcessor(ws, + const std::string socketName = "child_ws_" + std::to_string(getpid()); + IoUtil::SocketProcessor(ws, socketName, [&socketName, &ws, &loKit, &queue](const std::vector<char>& data) { std::string message(data.data(), data.size()); diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp index bb2bd85..91329d6 100644 --- a/loolwsd/LOOLWSD.cpp +++ b/loolwsd/LOOLWSD.cpp @@ -878,7 +878,7 @@ private: LOOLWSD::dumpEventTrace(docBroker->getJailId(), id, "NewSession: " + uri); // Let messages flow. - IoUtil::SocketProcessor(ws, + IoUtil::SocketProcessor(ws, "client_ws_" + id, [&session](const std::vector<char>& payload) { return session->handleInput(payload.data(), payload.size()); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits