xref: /OK3568_Linux_fs/app/forlinx/flapp/src/libs/server/servermanager.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "servermanager.h"
2 #include <QMap>
3 #include "platformserver.h"
4 #include "serverhandler.h"
5 #include <QGlobalStatic>
6 class ServerManagerPrivate{
7 public:
8     QMap<QString, PlatformServer*> servers;
9     QMap<QString, ServerHandler*> handler;
10 };
Q_GLOBAL_STATIC(ServerManager,s_instance)11  Q_GLOBAL_STATIC(ServerManager,s_instance )
12 ServerManager::ServerManager():m_d(new ServerManagerPrivate)
13 {
14 
15 }
16 
~ServerManager()17 ServerManager::~ServerManager()
18 {
19     delete m_d;
20 }
21 
instance()22 ServerManager *ServerManager::instance()
23 {
24     return s_instance;
25 }
26 
registerSever(PlatformServer * server)27 void ServerManager::registerSever(PlatformServer *server)
28 {
29     if(!m_d->servers.values().contains(server))
30     {
31         m_d->servers.insert(server->serverName(), server);
32     }
33 }
34 
unRegisterServer(const QString & serverName)35 void ServerManager::unRegisterServer(const QString &serverName)
36 {
37     if(m_d->servers.contains(serverName))
38     {
39         PlatformServer *server =m_d->servers.value(serverName);
40         m_d->servers.remove(serverName);
41         server->stopwork();
42         delete server;
43     }
44 }
45 
addHandler(const QString & servername,ServerHandler * handler)46 void ServerManager::addHandler(const QString &servername, ServerHandler *handler)
47 {
48     PlatformServer *server =m_d->servers.value(servername);
49     if(server!= NULL && !m_d->handler.values().contains(handler))
50     {
51        m_d->handler.insert(servername, handler);
52        server->addHandler(handler);
53 
54     }
55 }
56 
57 
removeHandler(ServerHandler * handler)58 void ServerManager::removeHandler(ServerHandler *handler)
59 {
60     if(m_d->handler.values().contains(handler))
61     {
62         QString key = m_d->handler.key(handler);
63         m_d->handler.remove(key);
64         PlatformServer *server  = m_d->servers.value(key);
65         if(server != NULL)
66         {
67             server->removehandler(handler);
68         }
69     }
70 }
71 
start(const QString serverName)72 void ServerManager::start(const QString serverName)
73 {
74     PlatformServer *server = m_d->servers.value(serverName);
75     if(server != NULL)
76     {
77         server->startwork();
78     }
79 }
80 
stop(const QString serverName)81 void ServerManager::stop(const QString serverName)
82 {
83     PlatformServer *server = m_d->servers.value(serverName);
84     if(server != NULL)
85     {
86         server->stopwork();
87     }
88 }
89 
config(const QString serverName,const QVariant & arg)90 void ServerManager::config(const QString serverName, const QVariant &arg)
91 {
92     PlatformServer *server = m_d->servers.value(serverName);
93     if(server != NULL)
94     {
95         server->config(arg);
96     }
97 }
98 
99