wesnothd: restore functionality to log stats every 5 minutes

This commit is contained in:
loonycyborg 2018-06-04 14:36:48 +03:00
parent 57da02a919
commit 0714d488bc
2 changed files with 19 additions and 5 deletions

View file

@ -259,7 +259,7 @@ server::server(int port,
, games_and_users_list_("[gamelist]\n[/gamelist]\n", simple_wml::INIT_STATIC)
, metrics_()
, last_ping_(std::time(nullptr))
, last_stats_(last_ping_)
, dump_stats_timer_(io_service_)
, last_uh_clean_(last_ping_)
, cmd_handlers_()
, timer_(io_service_)
@ -269,6 +269,8 @@ server::server(int port,
ban_manager_.read();
start_server();
start_dump_stats();
}
#ifndef _WIN32
@ -542,12 +544,22 @@ std::string server::is_ip_banned(const std::string& ip)
return ban_manager_.is_ip_banned(ip);
}
void server::dump_stats(const std::time_t& now)
void server::start_dump_stats()
{
last_stats_ = now;
dump_stats_timer_.expires_from_now(std::chrono::minutes(5));
dump_stats_timer_.async_wait([this](const boost::system::error_code& ec) { dump_stats(ec); });
}
void server::dump_stats(const boost::system::error_code& ec)
{
if(ec) {
ERR_SERVER << "Error waiting for timer: " << ec.message() << "\n";
return;
}
LOG_SERVER << "Statistics:"
<< "\tnumber_of_games = " << games().size() << "\tnumber_of_users = " << player_connections_.size()
<< "\n";
start_dump_stats();
}
void server::clean_user_handler(const std::time_t& now)

View file

@ -26,6 +26,7 @@
#include <boost/shared_array.hpp>
#include <boost/asio/signal_set.hpp>
#include <boost/asio/steady_timer.hpp>
namespace wesnothd
{
@ -168,8 +169,9 @@ private:
metrics metrics_;
std::time_t last_ping_;
std::time_t last_stats_;
void dump_stats(const std::time_t& now);
boost::asio::steady_timer dump_stats_timer_;
void start_dump_stats();
void dump_stats(const boost::system::error_code& ec);
std::time_t last_uh_clean_;
void clean_user_handler(const std::time_t& now);