From a441474d75eb6ac4e9d89276c11b9da786c5f26b Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 2 May 2017 14:20:00 -0400 Subject: [PATCH] show transit bandwidth --- daemon/HTTPServer.cpp | 5 ++--- libi2pd/TransitTunnel.cpp | 9 +-------- libi2pd/TransitTunnel.h | 2 -- libi2pd/Transports.cpp | 10 +++++++--- libi2pd/Transports.h | 11 +++++++---- 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/daemon/HTTPServer.cpp b/daemon/HTTPServer.cpp index aa40e16f..363b365a 100644 --- a/daemon/HTTPServer.cpp +++ b/daemon/HTTPServer.cpp @@ -11,7 +11,6 @@ #include "Log.h" #include "Config.h" #include "Tunnel.h" -#include "TransitTunnel.h" #include "Transports.h" #include "NetDb.hpp" #include "HTTP.h" @@ -230,8 +229,8 @@ namespace http { ShowTraffic (s, i2p::transport::transports.GetTotalSentBytes ()); s << " (" << (double) i2p::transport::transports.GetOutBandwidth () / 1024 << " KiB/s)
\r\n"; s << "Transit: "; - ShowTraffic (s, i2p::tunnel::GetTotalTrasitTransmittedBytes ()); - s << "
\r\n"; + ShowTraffic (s, i2p::transport::transports.GetTotalTransitTransmittedBytes ()); + s << " (" << (double) i2p::transport::transports.GetTransitBandwidth () / 1024 << " KiB/s)
\r\n"; s << "Data path: " << i2p::fs::GetDataDir() << "
\r\n"; s << "
\r\n\r\n

\r\n"; s << "Router Ident: " << i2p::context.GetRouterInfo().GetIdentHashBase64() << "
\r\n"; diff --git a/libi2pd/TransitTunnel.cpp b/libi2pd/TransitTunnel.cpp index 78dc19f5..bcba4d60 100644 --- a/libi2pd/TransitTunnel.cpp +++ b/libi2pd/TransitTunnel.cpp @@ -11,13 +11,6 @@ namespace i2p { namespace tunnel { - static uint64_t m_TotalTransitTrasmittedBytes = 0; - - uint64_t GetTotalTrasitTransmittedBytes () - { - return m_TotalTransitTrasmittedBytes; - } - TransitTunnel::TransitTunnel (uint32_t receiveTunnelID, const uint8_t * nextIdent, uint32_t nextTunnelID, const uint8_t * layerKey,const uint8_t * ivKey): @@ -29,7 +22,7 @@ namespace tunnel void TransitTunnel::EncryptTunnelMsg (std::shared_ptr in, std::shared_ptr out) { m_Encryption.Encrypt (in->GetPayload () + 4, out->GetPayload () + 4); - m_TotalTransitTrasmittedBytes += TUNNEL_DATA_MSG_SIZE; + i2p::transport::transports.UpdateTotalTransitTransmittedBytes (TUNNEL_DATA_MSG_SIZE); } TransitTunnelParticipant::~TransitTunnelParticipant () diff --git a/libi2pd/TransitTunnel.h b/libi2pd/TransitTunnel.h index 0be7a6ef..eec244ce 100644 --- a/libi2pd/TransitTunnel.h +++ b/libi2pd/TransitTunnel.h @@ -99,8 +99,6 @@ namespace tunnel const uint8_t * nextIdent, uint32_t nextTunnelID, const uint8_t * layerKey,const uint8_t * ivKey, bool isGateway, bool isEndpoint); - - uint64_t GetTotalTrasitTransmittedBytes (); } } diff --git a/libi2pd/Transports.cpp b/libi2pd/Transports.cpp index 2227e8f5..993b3e64 100644 --- a/libi2pd/Transports.cpp +++ b/libi2pd/Transports.cpp @@ -112,8 +112,10 @@ namespace transport m_IsOnline (true), m_IsRunning (false), m_Thread (nullptr), m_Service (nullptr), m_Work (nullptr), m_PeerCleanupTimer (nullptr), m_PeerTestTimer (nullptr), m_NTCPServer (nullptr), m_SSUServer (nullptr), m_DHKeysPairSupplier (5), // 5 pre-generated keys - m_TotalSentBytes(0), m_TotalReceivedBytes(0), m_InBandwidth (0), m_OutBandwidth (0), - m_LastInBandwidthUpdateBytes (0), m_LastOutBandwidthUpdateBytes (0), m_LastBandwidthUpdateTime (0) + m_TotalSentBytes(0), m_TotalReceivedBytes(0), m_TotalTransitTransmittedBytes (0), + m_InBandwidth (0), m_OutBandwidth (0), m_TransitBandwidth(0), + m_LastInBandwidthUpdateBytes (0), m_LastOutBandwidthUpdateBytes (0), + m_LastTransitBandwidthUpdateBytes (0), m_LastBandwidthUpdateTime (0) { } @@ -243,11 +245,13 @@ namespace transport { m_InBandwidth = (m_TotalReceivedBytes - m_LastInBandwidthUpdateBytes)*1000/delta; // per second m_OutBandwidth = (m_TotalSentBytes - m_LastOutBandwidthUpdateBytes)*1000/delta; // per second + m_TransitBandwidth = (m_TotalTransitTransmittedBytes - m_LastTransitBandwidthUpdateBytes)*1000/delta; } } m_LastBandwidthUpdateTime = ts; m_LastInBandwidthUpdateBytes = m_TotalReceivedBytes; - m_LastOutBandwidthUpdateBytes = m_TotalSentBytes; + m_LastOutBandwidthUpdateBytes = m_TotalSentBytes; + m_LastTransitBandwidthUpdateBytes = m_TotalTransitTransmittedBytes; } bool Transports::IsBandwidthExceeded () const diff --git a/libi2pd/Transports.h b/libi2pd/Transports.h index a68838e2..8cc97d22 100644 --- a/libi2pd/Transports.h +++ b/libi2pd/Transports.h @@ -99,9 +99,12 @@ namespace transport void UpdateSentBytes (uint64_t numBytes) { m_TotalSentBytes += numBytes; }; void UpdateReceivedBytes (uint64_t numBytes) { m_TotalReceivedBytes += numBytes; }; uint64_t GetTotalSentBytes () const { return m_TotalSentBytes; }; - uint64_t GetTotalReceivedBytes () const { return m_TotalReceivedBytes; }; + uint64_t GetTotalReceivedBytes () const { return m_TotalReceivedBytes; }; + uint64_t GetTotalTransitTransmittedBytes () const { return m_TotalTransitTransmittedBytes; } + void UpdateTotalTransitTransmittedBytes (uint32_t add) { m_TotalTransitTransmittedBytes += add; }; uint32_t GetInBandwidth () const { return m_InBandwidth; }; uint32_t GetOutBandwidth () const { return m_OutBandwidth; }; + uint32_t GetTransitBandwidth () const { return m_TransitBandwidth; }; bool IsBandwidthExceeded () const; size_t GetNumPeers () const { return m_Peers.size (); }; std::shared_ptr GetRandomPeer () const; @@ -155,9 +158,9 @@ namespace transport DHKeysPairSupplier m_DHKeysPairSupplier; - std::atomic m_TotalSentBytes, m_TotalReceivedBytes; - uint32_t m_InBandwidth, m_OutBandwidth; // bytes per second - uint64_t m_LastInBandwidthUpdateBytes, m_LastOutBandwidthUpdateBytes; + std::atomic m_TotalSentBytes, m_TotalReceivedBytes, m_TotalTransitTransmittedBytes; + uint32_t m_InBandwidth, m_OutBandwidth, m_TransitBandwidth; // bytes per second + uint64_t m_LastInBandwidthUpdateBytes, m_LastOutBandwidthUpdateBytes, m_LastTransitBandwidthUpdateBytes; uint64_t m_LastBandwidthUpdateTime; /** which router families to trust for first hops */