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