common/Session.hpp | 1 + wsd/ClientSession.cpp | 21 +++++++++++++++++---- wsd/ClientSession.hpp | 3 +++ 3 files changed, 21 insertions(+), 4 deletions(-)
New commits: commit 5c879a17b22b60ede615d3e32d74f01af7c4b7f5 Author: Michael Meeks <michael.me...@collabora.com> Date: Mon Sep 11 18:59:38 2017 +0100 Count key-strokes, and report per session. Change-Id: Id661fc15d4a75e322024ce62d24b2d7dae8f256a diff --git a/common/Session.hpp b/common/Session.hpp index 99961848..645ec3c5 100644 --- a/common/Session.hpp +++ b/common/Session.hpp @@ -119,6 +119,7 @@ private: /// True if the user is active, otherwise false (switched tabs). std::atomic<bool> _isActive; + /// Time of the last interactive event being received std::chrono::steady_clock::time_point _lastActivityTime; // Whether websocket received close frame. Closing Handshake diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index 2e455029..c96a8542 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -40,7 +40,8 @@ ClientSession::ClientSession(const std::string& id, _uriPublic(uriPublic), _isDocumentOwner(false), _isAttached(false), - _isViewLoaded(false) + _isViewLoaded(false), + _keyEvents(1) { const size_t curConnections = ++LOOLWSD::NumConnections; LOG_INF("ClientSession ctor [" << getName() << "], current number of connections: " << curConnections); @@ -82,7 +83,6 @@ bool ClientSession::_handleInput(const char *buffer, int length) updateLastActivityTime(); docBroker->updateLastActivityTime(); } - if (tokens[0] == "loolclient") { const auto versionTuple = ParseVersion(tokens[1]); @@ -240,6 +240,9 @@ bool ClientSession::_handleInput(const char *buffer, int length) } else { + if (tokens[0] == "key") + _keyEvents++; + if (!filterMessage(firstLine)) { const std::string dummyFrame = "dummymsg"; @@ -879,9 +882,19 @@ void ClientSession::dumpState(std::ostream& os) os << "\t\tisReadOnly: " << isReadOnly() << "\n\t\tisDocumentOwner: " << _isDocumentOwner << "\n\t\tisAttached: " << _isAttached - << "\n"; + << "\n\t\tkeyEvents: " << _keyEvents; + + std::shared_ptr<StreamSocket> socket = _socket.lock(); + if (socket) + { + uint64_t sent, recv; + socket->getIOStats(sent, recv); + os << "\n\t\tsent/keystroke: " << (double)sent/_keyEvents << "bytes"; + } + + os << "\n"; _senderQueue.dumpState(os); -} +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp index dd2ea0e3..abadb86d 100644 --- a/wsd/ClientSession.hpp +++ b/wsd/ClientSession.hpp @@ -162,6 +162,9 @@ private: /// Wopi FileInfo object std::unique_ptr<WopiStorage::WOPIFileInfo> _wopiFileInfo; + /// Count of key-strokes + uint64_t _keyEvents; + SenderQueue<std::shared_ptr<Message>> _senderQueue; }; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits