From d9fd5794d8a326d45ef645216bfe2c4f8f79e4a2 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Sun, 12 Jun 2011 17:22:56 +0200 Subject: [PATCH] New config variables --- backends/libpurple/main.cpp | 3 --- spectrum/src/sample.cfg | 3 +++ src/config.cpp | 3 +++ src/conversationmanager.cpp | 2 +- src/networkpluginserver.cpp | 14 +++++++------- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 01e83277..25f19ae5 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -633,9 +633,6 @@ static PurpleCoreUiOps coreUiOps = }; static void signed_on(PurpleConnection *gc, gpointer unused) { - for (int i = 0; i<1500; i++) { - std::cout << "A\n"; - } PurpleAccount *account = purple_connection_get_account(gc); np->handleConnected(np->m_accounts[account]); } diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index d0ecbf1c..4f85c132 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -4,6 +4,9 @@ password = secret server = 127.0.0.1 port = 5222 server_mode = 1 +backend_host=localhost # < this option doesn't work yet +backend_port=10001 +users_per_backend=2 backend=../../backends/libpurple/libpurple_backend #backend=../../backends/libircclient-qt/libircclient-qt_backend protocol=prpl-jabber diff --git a/src/config.cpp b/src/config.cpp index 6e8499cf..24f57dfe 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -39,6 +39,9 @@ bool Config::load(const std::string &configfile, boost::program_options::options ("service.protocol", value()->default_value(""), "Protocol") ("service.allowed_servers", value()->default_value(""), "Only users from these servers can connect") ("service.server_mode", value()->default_value(false), "True if Spectrum should behave as server") + ("service.users_per_backend", value()->default_value(100), "Number of users per one legacy network backend") + ("service.backend_host", value()->default_value("localhost"), "Host to bind backend server to") + ("service.backend_port", value()->default_value("10000"), "Port to bind backend server to") ("registration.enable_public_registration", value()->default_value(true), "True if users should be able to register.") ("registration.language", value()->default_value("en"), "Default language for registration form") ("registration.instructions", value()->default_value(""), "Instructions showed to user in registration form") diff --git a/src/conversationmanager.cpp b/src/conversationmanager.cpp index c32640a2..0b237b41 100644 --- a/src/conversationmanager.cpp +++ b/src/conversationmanager.cpp @@ -37,8 +37,8 @@ ConversationManager::ConversationManager(User *user, Component *component){ ConversationManager::~ConversationManager() { while(!m_convs.empty()) { - m_convs.erase(m_convs.begin()); delete (*m_convs.begin()).second; + m_convs.erase(m_convs.begin()); } } diff --git a/src/networkpluginserver.cpp b/src/networkpluginserver.cpp index 25ddcbd2..ec4edf96 100644 --- a/src/networkpluginserver.cpp +++ b/src/networkpluginserver.cpp @@ -133,13 +133,13 @@ NetworkPluginServer::NetworkPluginServer(Component *component, Config *config, U m_rosterResponder->onBuddyUpdated.connect(boost::bind(&NetworkPluginServer::handleBuddyUpdated, this, _1, _2)); m_rosterResponder->start(); - m_server = component->getNetworkFactories()->getConnectionFactory()->createConnectionServer(10000); + m_server = component->getNetworkFactories()->getConnectionFactory()->createConnectionServer(boost::lexical_cast(CONFIG_STRING(m_config, "service.backend_port"))); m_server->onNewConnection.connect(boost::bind(&NetworkPluginServer::handleNewClientConnection, this, _1)); m_server->start(); signal(SIGCHLD, SigCatcher); - exec_(CONFIG_STRING(m_config, "service.backend").c_str(), "localhost", "10000", m_config->getConfigFile().c_str()); + exec_(CONFIG_STRING(m_config, "service.backend").c_str(), CONFIG_STRING(m_config, "service.backend_host").c_str(), CONFIG_STRING(m_config, "service.backend_port").c_str(), m_config->getConfigFile().c_str()); } NetworkPluginServer::~NetworkPluginServer() { @@ -176,7 +176,7 @@ void NetworkPluginServer::handleSessionFinished(Client *c) { return; } } - exec_(CONFIG_STRING(m_config, "service.backend").c_str(), "localhost", "10000", m_config->getConfigFile().c_str()); + exec_(CONFIG_STRING(m_config, "service.backend").c_str(), CONFIG_STRING(m_config, "service.backend_host").c_str(), CONFIG_STRING(m_config, "service.backend_port").c_str(), m_config->getConfigFile().c_str()); } void NetworkPluginServer::handleConnectedPayload(const std::string &data) { @@ -428,7 +428,7 @@ void NetworkPluginServer::pingTimeout() { m_pingTimer->start(); } else { - exec_(CONFIG_STRING(m_config, "service.backend").c_str(), "localhost", "10000", m_config->getConfigFile().c_str()); + exec_(CONFIG_STRING(m_config, "service.backend").c_str(), CONFIG_STRING(m_config, "service.backend_host").c_str(), CONFIG_STRING(m_config, "service.backend_port").c_str(), m_config->getConfigFile().c_str()); } } } @@ -683,9 +683,9 @@ void NetworkPluginServer::sendPing(Client *c) { NetworkPluginServer::Client *NetworkPluginServer::getFreeClient() { for (std::list::const_iterator it = m_clients.begin(); it != m_clients.end(); it++) { - if ((*it)->users.size() < 1) { - if ((*it)->users.size() + 1 == 1) { - exec_(CONFIG_STRING(m_config, "service.backend").c_str(), "localhost", "10000", m_config->getConfigFile().c_str()); + if ((*it)->users.size() < CONFIG_INT(m_config, "service.users_per_backend")) { + if ((*it)->users.size() + 1 == CONFIG_INT(m_config, "service.users_per_backend")) { + exec_(CONFIG_STRING(m_config, "service.backend").c_str(), CONFIG_STRING(m_config, "service.backend_host").c_str(), CONFIG_STRING(m_config, "service.backend_port").c_str(), m_config->getConfigFile().c_str()); } return (*it); }