diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-03-11 16:35:08 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-03-11 16:36:06 +0100 |
commit | 6517cc3078eba96ea96e085d033a4b8a96eb7151 (patch) | |
tree | 6a8d2aee0cf00cd76263bfdca58da6a934547b40 /lib/Socket.cpp | |
parent | 84a7a40492b3db9f204f48262481e60a1268f469 (diff) | |
download | dabmux-6517cc3078eba96ea96e085d033a4b8a96eb7151.tar.gz dabmux-6517cc3078eba96ea96e085d033a4b8a96eb7151.tar.bz2 dabmux-6517cc3078eba96ea96e085d033a4b8a96eb7151.zip |
Add EDI/TCP number of active connections statisticsnext
Diffstat (limited to 'lib/Socket.cpp')
-rw-r--r-- | lib/Socket.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/Socket.cpp b/lib/Socket.cpp index 938b573..5c920d7 100644 --- a/lib/Socket.cpp +++ b/lib/Socket.cpp @@ -24,6 +24,7 @@ #include "Socket.h" +#include <numeric> #include <stdexcept> #include <cstdio> #include <cstring> @@ -1063,6 +1064,17 @@ void TCPConnection::process() #endif } +TCPConnection::stats_t TCPConnection::get_stats() const +{ + TCPConnection::stats_t s; + const vector<size_t> buffer_sizes = queue.map<size_t>( + [](const vector<uint8_t>& vec) { return vec.size(); } + ); + + s.buffer_fullness = std::accumulate(buffer_sizes.cbegin(), buffer_sizes.cend(), 0); + s.remote_address = m_sock.get_remote_address(); + return s; +} TCPDataDispatcher::TCPDataDispatcher(size_t max_queue_size, size_t buffers_to_preroll) : m_max_queue_size(max_queue_size), @@ -1136,6 +1148,16 @@ void TCPDataDispatcher::process() } } + +std::vector<TCPConnection::stats_t> TCPDataDispatcher::get_stats() const +{ + std::vector<TCPConnection::stats_t> s; + for (const auto& conn : m_connections) { + s.push_back(conn.get_stats()); + } + return s; +} + TCPReceiveServer::TCPReceiveServer(size_t blocksize) : m_blocksize(blocksize) { |