From 7fb1d2a1b5f1fb7ad2337096901e3d626281cd04 Mon Sep 17 00:00:00 2001 From: KimLS Date: Sat, 6 Apr 2019 15:49:44 -0700 Subject: [PATCH] Resent time stats --- common/net/daybreak_connection.cpp | 8 ++++++++ common/net/daybreak_connection.h | 6 ++++++ zone/command.cpp | 1 + zone/eqemu_api_zone_data_service.cpp | 3 +++ 4 files changed, 18 insertions(+) diff --git a/common/net/daybreak_connection.cpp b/common/net/daybreak_connection.cpp index dc2b491c2..754f74821 100644 --- a/common/net/daybreak_connection.cpp +++ b/common/net/daybreak_connection.cpp @@ -1105,6 +1105,10 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream) } m_stats.resent_packets++; + m_stats.resent_time_min = std::min(m_stats.resent_time_min, (uint64_t)time_since_last_send.count()); + m_stats.resent_time_max = std::max(m_stats.resent_time_max, (uint64_t)time_since_last_send.count()); + m_stats.resent_time_average = (m_stats.resent_time_average / 2) + (time_since_last_send.count() / 2); + InternalBufferedSend(p); entry.second.last_sent = now; entry.second.times_resent++; @@ -1134,6 +1138,10 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream) } m_stats.resent_packets++; + m_stats.resent_time_min = std::min(m_stats.resent_time_min, (uint64_t)time_since_last_send.count()); + m_stats.resent_time_max = std::max(m_stats.resent_time_max, (uint64_t)time_since_last_send.count()); + m_stats.resent_time_average = (m_stats.resent_time_average / 2) + (time_since_last_send.count() / 2); + InternalBufferedSend(p); entry.second.last_sent = now; entry.second.times_resent++; diff --git a/common/net/daybreak_connection.h b/common/net/daybreak_connection.h index cf8aa409d..2ddf16f83 100644 --- a/common/net/daybreak_connection.h +++ b/common/net/daybreak_connection.h @@ -91,6 +91,9 @@ namespace EQ resent_packets = 0; resent_fragments = 0; resent_full = 0; + resent_time_min = 0; + resent_time_max = 0; + resent_time_average = 0; datarate_remaining = 0.0; } @@ -111,6 +114,9 @@ namespace EQ uint64_t resent_packets; uint64_t resent_fragments; uint64_t resent_full; + uint64_t resent_time_min; + uint64_t resent_time_max; + uint64_t resent_time_average; double datarate_remaining; }; diff --git a/zone/command.cpp b/zone/command.cpp index ce4a49a98..491be25da 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -9522,6 +9522,7 @@ void command_netstats(Client *c, const Seperator *sep) c->Message(0, "Resent Packets: %u (%.2f/sec)", stats.resent_packets, stats.resent_packets / sec_since_stats_reset); c->Message(0, "Resent Fragments: %u (%.2f/sec)", stats.resent_fragments, stats.resent_fragments / sec_since_stats_reset); c->Message(0, "Resent Non-Fragments: %u (%.2f/sec)", stats.resent_full, stats.resent_full / sec_since_stats_reset); + c->Message(0, "Resent Times: %ums (min) %ums (max) %ums (avg)", stats.resent_time_min, stats.resent_time_max, stats.resent_time_average); c->Message(0, "Dropped Datarate Packets: %u (%.2f/sec)", stats.dropped_datarate_packets, stats.dropped_datarate_packets / sec_since_stats_reset); if (opts.daybreak_options.outgoing_data_rate > 0.0) { diff --git a/zone/eqemu_api_zone_data_service.cpp b/zone/eqemu_api_zone_data_service.cpp index 153153c0c..fc15c0fb3 100644 --- a/zone/eqemu_api_zone_data_service.cpp +++ b/zone/eqemu_api_zone_data_service.cpp @@ -689,6 +689,9 @@ void callGetPacketStatistics(Json::Value &response) row["resent_packets"] = stats.resent_packets; row["resent_fragments"] = stats.resent_fragments; row["resent_non_fragments"] = stats.resent_full; + row["resent_time_min"] = stats.resent_time_min; + row["resent_time_max"] = stats.resent_time_max; + row["resent_time_average"] = stats.resent_time_average; row["dropped_datarate_packets"] = stats.dropped_datarate_packets; Json::Value sent_packet_types;