better AdminInterface
This commit is contained in:
parent
c68479f86d
commit
cbf6db2a61
4 changed files with 17 additions and 9 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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++;
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Reference in a new issue