From 85600b449fe1cb73f2aaab1c434790a02c4485de Mon Sep 17 00:00:00 2001 From: HanzZ Date: Tue, 27 Sep 2011 20:16:59 +0200 Subject: [PATCH] added service.memory_collector_time to configure backend collection basend on highest memory usage. By default this feature is deactivated --- spectrum/src/sample.cfg | 4 ++-- src/config.cpp | 1 + src/networkpluginserver.cpp | 12 ++++++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index 7bd97004..730060b4 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -12,8 +12,8 @@ admin_password=test #cert_password=test #password to that certificate if any users_per_backend=10 backend=/home/hanzz/code/libtransport/backends/libpurple/spectrum2_libpurple_backend -#backend=/home/hanzz/code/libtransport/backends/frotz/spectrum_frotz_backend -#backend=../../backends/libircclient-qt/spectrum_libircclient-qt_backend +#backend=/home/hanzz/code/libtransport/backends/frotz/spectrum2_frotz_backend +#backend=../../backends/libircclient-qt/spectrum2_libircclient-qt_backend #protocol=prpl-msn protocol=any #protocol=prpl-icq diff --git a/src/config.cpp b/src/config.cpp index 119773e6..eece6790 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -67,6 +67,7 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description ("service.admin_password", value()->default_value(""), "Administrator password.") ("service.reuse_old_backends", value()->default_value(true), "True if Spectrum should use old backends which were full in the past.") ("service.idle_reconnect_time", value()->default_value(0), "Time in seconds after which idle users are reconnected to let their backend die.") + ("service.memory_collector_time", value()->default_value(0), "Time in seconds after which backend with most memory is set to die.") ("service.more_resources", value()->default_value(false), "Allow more resources to be connected in server mode at the same time.") ("service.enable_privacy_lists", value()->default_value(true), "") ("identity.name", value()->default_value("Spectrum 2 Transport"), "Name showed in service discovery.") diff --git a/src/networkpluginserver.cpp b/src/networkpluginserver.cpp index 8eb0f3a0..8fdaf0b9 100644 --- a/src/networkpluginserver.cpp +++ b/src/networkpluginserver.cpp @@ -217,9 +217,11 @@ NetworkPluginServer::NetworkPluginServer(Component *component, Config *config, U m_pingTimer->onTick.connect(boost::bind(&NetworkPluginServer::pingTimeout, this)); m_pingTimer->start(); - m_collectTimer = component->getNetworkFactories()->getTimerFactory()->createTimer(2*3600000); - m_collectTimer->onTick.connect(boost::bind(&NetworkPluginServer::collectBackend, this)); - m_collectTimer->start(); + if (CONFIG_INT(m_config, "service.memory_collector_time") != 0) { + m_collectTimer = component->getNetworkFactories()->getTimerFactory()->createTimer(CONFIG_INT(m_config, "service.memory_collector_time")); + m_collectTimer->onTick.connect(boost::bind(&NetworkPluginServer::collectBackend, this)); + m_collectTimer->start(); + } m_vcardResponder = new VCardResponder(component->getIQRouter(), component->getNetworkFactories(), userManager); m_vcardResponder->onVCardRequired.connect(boost::bind(&NetworkPluginServer::handleVCardRequired, this, _1, _2, _3)); @@ -736,7 +738,9 @@ void NetworkPluginServer::collectBackend() { } if (backend) { - m_collectTimer->start(); + if (m_collectTimer) { + m_collectTimer->start(); + } LOG4CXX_INFO(logger, "Backend " << backend << "is set to die"); backend->acceptUsers = false; }