[Libreoffice-commits] online.git: common/Session.cpp common/Session.hpp net/Socket.hpp wsd/DocumentBroker.cpp wsd/DocumentBroker.hpp

Michael Meeks michael.meeks at collabora.com
Fri Jun 2 19:42:13 UTC 2017


 common/Session.cpp     |   12 ++++++++++++
 common/Session.hpp     |    2 ++
 net/Socket.hpp         |   16 ++++++++--------
 wsd/DocumentBroker.cpp |   19 +++++++++++++++++++
 wsd/DocumentBroker.hpp |    2 ++
 5 files changed, 43 insertions(+), 8 deletions(-)

New commits:
commit 3101fa510d4f86301d81ae76a64b7c780ae69e19
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Thu Jun 1 03:40:01 2017 +0100

    Accumulate I/O stats per document.
    
    Change-Id: Ie2f5647e65070ddd828f048820efd38b600f9133

diff --git a/common/Session.cpp b/common/Session.cpp
index 44293a18..97933c83 100644
--- a/common/Session.cpp
+++ b/common/Session.cpp
@@ -203,6 +203,18 @@ void Session::handleMessage(bool /*fin*/, WSOpCode /*code*/, std::vector<char> &
     }
 }
 
+void Session::getIOStats(uint64_t &sent, uint64_t &recv)
+{
+    auto socket = _socket.lock();
+    if (socket)
+        socket->getIOStats(sent, recv);
+    else
+    {
+        sent = 0;
+        recv = 0;
+    }
+}
+
 void Session::dumpState(std::ostream& os)
 {
     WebSocketHandler::dumpState(os);
diff --git a/common/Session.hpp b/common/Session.hpp
index 63872c08..5a154ee1 100644
--- a/common/Session.hpp
+++ b/common/Session.hpp
@@ -82,6 +82,8 @@ public:
     void closeFrame() { _isCloseFrame = true; };
     bool isCloseFrame() const { return _isCloseFrame; }
 
+    void getIOStats(uint64_t &sent, uint64_t &recv);
+
 protected:
     Session(const std::string& name, const std::string& id, bool readonly);
     virtual ~Session();
diff --git a/net/Socket.hpp b/net/Socket.hpp
index a7cc426d..4c410d23 100644
--- a/net/Socket.hpp
+++ b/net/Socket.hpp
@@ -818,6 +818,12 @@ public:
         return socket;
     }
 
+    void getIOStats(uint64_t &sent, uint64_t &recv)
+    {
+        sent = _bytesSent;
+        recv = _bytesRecvd;
+    }
+
 protected:
 
     /// Called when a polling event is received.
@@ -947,12 +953,6 @@ protected:
 
     void dumpState(std::ostream& os) override;
 
-    void getStats(uint64_t &sent, uint64_t &recv)
-    {
-        sent = _bytesSent;
-        recv = _bytesRecvd;
-    }
-
 protected:
     /// Client handling the actual data.
     std::shared_ptr<SocketHandlerInterface> _socketHandler;
@@ -966,8 +966,8 @@ protected:
     std::vector< char > _inBuffer;
     std::vector< char > _outBuffer;
 
-    std::atomic<uint64_t> _bytesSent;
-    std::atomic<uint64_t> _bytesRecvd;
+    uint64_t _bytesSent;
+    uint64_t _bytesRecvd;
 
     // To be able to access _inBuffer and _outBuffer.
     // TODO we probably need accessors to the _inBuffer & _outBuffer
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index d92df509..ac7db55f 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -1430,10 +1430,27 @@ void DocumentBroker::updateLastActivityTime()
     Admin::instance().updateLastActivityTime(_docKey);
 }
 
+void DocumentBroker::getIOStats(uint64_t &sent, uint64_t &recv)
+{
+    sent = 0;
+    recv = 0;
+    assertCorrectThread();
+    for (const auto& sessionIt : _sessions)
+    {
+        uint64_t s, r;
+        sessionIt.second->getIOStats(s, r);
+        sent += s;
+        recv += r;
+    }
+}
+
 void DocumentBroker::dumpState(std::ostream& os)
 {
     std::unique_lock<std::mutex> lock(_mutex);
 
+    uint64_t sent, recv;
+    getIOStats(sent, recv);
+
     os << " Broker: " << _filename << " pid: " << getPid();
     if (_markToDestroy)
         os << " *** Marked to destroy ***";
@@ -1443,6 +1460,8 @@ void DocumentBroker::dumpState(std::ostream& os)
         os << "\n  loaded in: " << _loadDuration.count() << "ms";
     else
         os << "\n  still loading...";
+    os << "\n  sent: " << sent;
+    os << "\n  recv?: " << recv;
     os << "\n  modified?: " << _isModified;
     os << "\n  jail id: " << _jailId;
     os << "\n  filename: " << _filename;
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index 1329fcb1..2c244fe1 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -367,6 +367,8 @@ private:
     /// associated with this document.
     void pollThread();
 
+    void getIOStats(uint64_t &sent, uint64_t &recv);
+
 private:
     const std::string _uriOrig;
     const Poco::URI _uriPublic;


More information about the Libreoffice-commits mailing list