diff --git a/include/transport/admininterface.h b/include/transport/admininterface.h index e67b169d..393394eb 100644 --- a/include/transport/admininterface.h +++ b/include/transport/admininterface.h @@ -28,10 +28,12 @@ namespace Transport { class Component; class StorageBackend; +class UserManager; +class NetworkPluginServer; class AdminInterface { public: - AdminInterface(Component *component, StorageBackend *storageBackend = NULL); + AdminInterface(Component *component, UserManager *userManager, NetworkPluginServer *server = NULL, StorageBackend *storageBackend = NULL); ~AdminInterface(); @@ -40,6 +42,8 @@ class AdminInterface { Component *m_component; StorageBackend *m_storageBackend; + UserManager *m_userManager; + NetworkPluginServer *m_server; }; } diff --git a/include/transport/networkpluginserver.h b/include/transport/networkpluginserver.h index 4048efdd..6dc942cd 100644 --- a/include/transport/networkpluginserver.h +++ b/include/transport/networkpluginserver.h @@ -53,6 +53,10 @@ class NetworkPluginServer { virtual ~NetworkPluginServer(); + int getBackendCount() { + return m_clients.size(); + } + void handleMessageReceived(NetworkConversation *conv, boost::shared_ptr &message); private: diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp index 19e6e5bb..345973e1 100644 --- a/spectrum/src/main.cpp +++ b/spectrum/src/main.cpp @@ -73,9 +73,9 @@ int main(int argc, char **argv) } logger.setUserManager(&userManager); - AdminInterface adminInterface(&transport, storageBackend); - NetworkPluginServer plugin(&transport, &config, &userManager); + AdminInterface adminInterface(&transport, &userManager, &plugin, storageBackend); + eventLoop.run(); } diff --git a/src/admininterface.cpp b/src/admininterface.cpp index f6fd419c..0302aa60 100644 --- a/src/admininterface.cpp +++ b/src/admininterface.cpp @@ -24,6 +24,8 @@ #include "transport/storagebackend.h" #include "transport/conversationmanager.h" #include "transport/rostermanager.h" +#include "transport/usermanager.h" +#include "transport/networkpluginserver.h" #include "storageresponder.h" #include "log4cxx/logger.h" @@ -33,9 +35,11 @@ namespace Transport { static LoggerPtr logger = Logger::getLogger("AdminInterface"); -AdminInterface::AdminInterface(Component *component, StorageBackend *storageBackend) { +AdminInterface::AdminInterface(Component *component, UserManager *userManager, NetworkPluginServer *server, StorageBackend *storageBackend) { m_component = component; m_storageBackend = storageBackend; + m_userManager = userManager; + m_server = server; m_component->getStanzaChannel()->onMessageReceived.connect(bind(&AdminInterface::handleMessageReceived, this, _1)); } @@ -57,7 +61,9 @@ void AdminInterface::handleMessageReceived(Swift::Message::ref message) { message->setFrom(m_component->getJID()); if (message->getBody() == "status") { - message->setBody("Running"); + int users = m_userManager->getUserCount(); + int backends = m_server->getBackendCount() - 1; + message->setBody("Running (" + boost::lexical_cast(users) + " users connected using " + boost::lexical_cast(backends) + " backends)"); } else { message->setBody("Unknown command");