#include "servermanager.h" #include #include "platformserver.h" #include "serverhandler.h" #include class ServerManagerPrivate{ public: QMap servers; QMap handler; }; Q_GLOBAL_STATIC(ServerManager,s_instance ) ServerManager::ServerManager():m_d(new ServerManagerPrivate) { } ServerManager::~ServerManager() { delete m_d; } ServerManager *ServerManager::instance() { return s_instance; } void ServerManager::registerSever(PlatformServer *server) { if(!m_d->servers.values().contains(server)) { m_d->servers.insert(server->serverName(), server); } } void ServerManager::unRegisterServer(const QString &serverName) { if(m_d->servers.contains(serverName)) { PlatformServer *server =m_d->servers.value(serverName); m_d->servers.remove(serverName); server->stopwork(); delete server; } } void ServerManager::addHandler(const QString &servername, ServerHandler *handler) { PlatformServer *server =m_d->servers.value(servername); if(server!= NULL && !m_d->handler.values().contains(handler)) { m_d->handler.insert(servername, handler); server->addHandler(handler); } } void ServerManager::removeHandler(ServerHandler *handler) { if(m_d->handler.values().contains(handler)) { QString key = m_d->handler.key(handler); m_d->handler.remove(key); PlatformServer *server = m_d->servers.value(key); if(server != NULL) { server->removehandler(handler); } } } void ServerManager::start(const QString serverName) { PlatformServer *server = m_d->servers.value(serverName); if(server != NULL) { server->startwork(); } } void ServerManager::stop(const QString serverName) { PlatformServer *server = m_d->servers.value(serverName); if(server != NULL) { server->stopwork(); } } void ServerManager::config(const QString serverName, const QVariant &arg) { PlatformServer *server = m_d->servers.value(serverName); if(server != NULL) { server->config(arg); } }