00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 #ifndef __MASTERMANAGER_H__
00024 #define __MASTERMANAGER_H__
00025 
00026 #include "masterserver/masterclient.h"
00027 #include "serverapi/message.h"
00028 
00029 class CustomServers;
00030 class MasterClientSignalProxy;
00031 
00038 class MasterManager : public MasterClient
00039 {
00040         Q_OBJECT
00041 
00042         public:
00043                 MasterManager();
00044                 ~MasterManager();
00045 
00046                 void                                                            addMaster(MasterClient *master);
00047                 void                                                            clearServersList() { servers.clear(); }
00048                 CustomServers*                                          customServs() { return customServers; }
00049 
00050                 int                                                                     numMasters() const { return masters.size(); }
00051 
00052                 const EnginePlugin*                                     plugin() const { return NULL; }
00053 
00054                 MasterClient*                                           operator[](int index) { return masters[index]; }
00055 
00056                 bool                                                            readMasterResponse(QByteArray &data) { return false; }
00057 
00061                 bool                                                            readMasterResponse(QHostAddress& address, unsigned short port, QByteArray &data);
00062 
00063 
00064         public slots:
00065                 void                                                            refresh();
00066 
00067         signals:
00072                 void                                                            listUpdatedForMaster(MasterClient* pSender);
00073                 void                                                            masterMessage(MasterClient* pSender, const QString& title, const QString& content, bool isError);
00074                 void                                                            masterMessageImportant(MasterClient* pSender, const Message& objMessage);
00075                 void                                                            newServerBatchReceivedFromMaster(MasterClient* pSender, const QList<Server* >& servers);
00076 
00077         protected:
00078                 CustomServers*                                          customServers;
00079                 QList<MasterClient *>                           masters;
00080                 QSet<MasterClient *>                            mastersBeingRefreshed;
00081                 QList<MasterClientSignalProxy*>         mastersReceivers;
00082 
00083                 bool                                                            getServerListRequest(QByteArray &data) { return false; }
00084                 void                                                            timeoutRefreshEx();
00085 
00086         protected slots:
00087                 void                                                            masterListUpdated(MasterClient* pSender);
00088 
00089                 void                                                            readMasterMessage(MasterClient* pSender, const QString& title, const QString& content, bool isError)
00090                 {
00091                         emit masterMessage(pSender, title, content, isError);
00092                 }
00093 
00095                 void                                                            newServerBatchReceivedSlot(MasterClient* pSender, const QList<Server* >& servers)
00096                 {
00097                         emit newServerBatchReceivedFromMaster(pSender, servers);
00098                 }
00099 };
00100 
00101 #endif
00102