ArtMOO
|
00001 #ifndef CONNECTIONMANAGER_H 00002 #define CONNECTIONMANAGER_H 00003 00004 #include <QObject> 00005 #include <QMap> 00006 #include "mooglobal.h" 00007 00008 class Connection; 00009 class ListenerSocket; 00010 00011 typedef QMap<ConnectionId, Connection *> ConnectionNodeMap; 00012 00013 class ConnectionManager : public QObject 00014 { 00015 Q_OBJECT 00016 00017 explicit ConnectionManager( QObject *pParent = 0 ); 00018 00019 public: 00020 static ConnectionManager *instance( void ); 00021 00022 ConnectionId fromPlayer( ObjectId pPlayerId ); 00023 00024 Connection *connection( ConnectionId pConnectionId ); 00025 00026 inline const ConnectionNodeMap &connectionList( void ) const 00027 { 00028 return( mConnectionNodeMap ); 00029 } 00030 00031 void closeListener( ListenerSocket *pLS ); 00032 00033 void processClosedSockets( void ); 00034 00035 signals: 00036 00037 public slots: 00038 ConnectionId doConnect( ObjectId pListenerId ); 00039 00040 void doDisconnect( ConnectionId pConnectionId ); 00041 00042 void logon( ConnectionId pConnectionId, ObjectId pPlayerId ); 00043 00044 void logoff( ConnectionId pConnectionId ); 00045 00046 private: 00047 static ConnectionManager *mInstance; 00048 00049 ConnectionNodeMap mConnectionNodeMap; 00050 ConnectionId mConnectionId; 00051 QMutex mClosedSocketMutex; 00052 QList<ListenerSocket *> mClosedSocketList; 00053 }; 00054 00055 #endif // CONNECTIONMANAGER_H