@@ -306,7 +306,7 @@ void AdnlLocalId::update_packet(AdnlPacket packet, bool update_id, bool sign, td
306306 }
307307}
308308
309- void AdnlLocalId::get_stats (td::Promise<tl_object_ptr<ton_api::adnl_stats_localId>> promise) {
309+ void AdnlLocalId::get_stats (bool all, td::Promise<tl_object_ptr<ton_api::adnl_stats_localId>> promise) {
310310 auto stats = create_tl_object<ton_api::adnl_stats_localId>();
311311 stats->short_id_ = short_id_.bits256_value ();
312312 for (auto &[ip, x] : inbound_rate_limiter_) {
@@ -317,22 +317,22 @@ void AdnlLocalId::get_stats(td::Promise<tl_object_ptr<ton_api::adnl_stats_localI
317317 }
318318 prepare_packet_stats ();
319319 stats->packets_recent_ = packet_stats_prev_.tl ();
320- stats->packets_total_ = packet_stats_total_.tl ();
320+ stats->packets_total_ = packet_stats_total_.tl (all );
321321 stats->packets_total_ ->ts_start_ = (double )Adnl::adnl_start_time ();
322322 stats->packets_total_ ->ts_end_ = td::Clocks::system ();
323323 promise.set_result (std::move (stats));
324324}
325325
326326void AdnlLocalId::add_decrypted_packet_stats (td::IPAddress addr) {
327327 prepare_packet_stats ();
328- ++ packet_stats_cur_.decrypted_packets [addr];
329- ++ packet_stats_total_.decrypted_packets [addr];
328+ packet_stats_cur_.decrypted_packets [addr]. inc () ;
329+ packet_stats_total_.decrypted_packets [addr]. inc () ;
330330}
331331
332332void AdnlLocalId::add_dropped_packet_stats (td::IPAddress addr) {
333333 prepare_packet_stats ();
334- ++ packet_stats_cur_.dropped_packets [addr];
335- ++ packet_stats_total_.dropped_packets [addr];
334+ packet_stats_cur_.dropped_packets [addr]. inc () ;
335+ packet_stats_total_.dropped_packets [addr]. inc () ;
336336}
337337
338338void AdnlLocalId::prepare_packet_stats () {
@@ -351,17 +351,22 @@ void AdnlLocalId::prepare_packet_stats() {
351351 }
352352}
353353
354- tl_object_ptr<ton_api::adnl_stats_localIdPackets> AdnlLocalId::PacketStats::tl () const {
354+ tl_object_ptr<ton_api::adnl_stats_localIdPackets> AdnlLocalId::PacketStats::tl (bool all) const {
355+ double threshold = all ? -1.0 : td::Clocks::system () - 600.0 ;
355356 auto obj = create_tl_object<ton_api::adnl_stats_localIdPackets>();
356357 obj->ts_start_ = ts_start;
357358 obj->ts_end_ = ts_end;
358359 for (const auto &[ip, packets] : decrypted_packets) {
359- obj->decrypted_packets_ .push_back (create_tl_object<ton_api::adnl_stats_ipPackets>(
360- ip.is_valid () ? PSTRING () << ip.get_ip_str () << " :" << ip.get_port () : " " , packets));
360+ if (packets.last_packet_ts >= threshold) {
361+ obj->decrypted_packets_ .push_back (create_tl_object<ton_api::adnl_stats_ipPackets>(
362+ ip.is_valid () ? PSTRING () << ip.get_ip_str () << " :" << ip.get_port () : " " , packets.packets ));
363+ }
361364 }
362365 for (const auto &[ip, packets] : dropped_packets) {
363- obj->dropped_packets_ .push_back (create_tl_object<ton_api::adnl_stats_ipPackets>(
364- ip.is_valid () ? PSTRING () << ip.get_ip_str () << " :" << ip.get_port () : " " , packets));
366+ if (packets.last_packet_ts >= threshold) {
367+ obj->dropped_packets_ .push_back (create_tl_object<ton_api::adnl_stats_ipPackets>(
368+ ip.is_valid () ? PSTRING () << ip.get_ip_str () << " :" << ip.get_port () : " " , packets.packets ));
369+ }
365370 }
366371 return obj;
367372}
0 commit comments