better AdminInterface

This commit is contained in:
Jan Kaluza 2011-08-03 13:58:55 +02:00
parent c68479f86d
commit cbf6db2a61
4 changed files with 17 additions and 9 deletions

View file

@ -69,7 +69,7 @@ class NetworkPluginServer {
void collectBackend();
void moveToLongRunBackend(User *user);
bool moveToLongRunBackend(User *user);
void handleMessageReceived(NetworkConversation *conv, boost::shared_ptr<Swift::Message> &message);

View file

@ -8,7 +8,7 @@ backend_host=localhost # < this option doesn't work yet
backend_port=10001
admin_username=admin
admin_password=test
#idle_reconnect_time=10
idle_reconnect_time=10
#cert= #patch to PKCS#12 certificate
#cert_password= #password to that certificate if any
users_per_backend=10

View file

@ -107,14 +107,20 @@ void AdminInterface::handleMessageReceived(Swift::Message::ref message) {
const std::list <NetworkPluginServer::Backend *> &backends = m_server->getBackends();
for (std::list <NetworkPluginServer::Backend *>::const_iterator b = backends.begin(); b != backends.end(); b++) {
NetworkPluginServer::Backend *backend = *b;
lst += "Backend " + boost::lexical_cast<std::string>(id) + ":\n";
lst += "Backend " + boost::lexical_cast<std::string>(id);
lst += backend->acceptUsers ? "" : " - not-accepting";
lst += backend->longRun ? " - long-running" : "";
lst += ":\n";
if (backend->users.size() == 0) {
lst += " waiting for users\n";
}
else {
time_t now = time(NULL);
for (std::list<User *>::const_iterator u = backend->users.begin(); u != backend->users.end(); u++) {
User *user = *u;
lst += " " + user->getJID().toBare().toString() + "\n";
lst += " " + user->getJID().toBare().toString();
lst += " - non-active for " + boost::lexical_cast<std::string>(now - user->getLastActivity()) + " seconds";
lst += "\n";
}
}
id++;

View file

@ -612,7 +612,8 @@ void NetworkPluginServer::pingTimeout() {
BOOST_FOREACH(User *u, usersToMove) {
LOG4CXX_INFO(logger, "Moving user " << u->getJID().toString() << " to long-running backend");
moveToLongRunBackend(u);
if (!moveToLongRunBackend(u))
break;
}
@ -655,18 +656,18 @@ void NetworkPluginServer::collectBackend() {
}
}
void NetworkPluginServer::moveToLongRunBackend(User *user) {
bool NetworkPluginServer::moveToLongRunBackend(User *user) {
// Check if user has already some backend
Backend *old = (Backend *) user->getData();
if (!old) {
LOG4CXX_INFO(logger, "User " << user->getJID().toString() << " does not have old backend. Not moving.");
return;
return true;
}
// if he's already on long run, do nothing
if (old->longRun) {
LOG4CXX_INFO(logger, "User " << user->getJID().toString() << " is already on long-running backend. Not moving.");
return;
return true;
}
// Get free longrun backend, if there's no longrun backend, create one and wait
@ -674,7 +675,7 @@ void NetworkPluginServer::moveToLongRunBackend(User *user) {
Backend *backend = getFreeClient(false, true);
if (!backend) {
LOG4CXX_INFO(logger, "No free long-running backend for user " << user->getJID().toString() << ". Will try later");
return;
return false;
}
// old backend will trigger disconnection which has to be ignored to keep user online
@ -690,6 +691,7 @@ void NetworkPluginServer::moveToLongRunBackend(User *user) {
// connect him
handleUserReadyToConnect(user);
return true;
}
void NetworkPluginServer::handleUserCreated(User *user) {