ArtMOO
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
G:/dev/qt/MOO/ServerCore/connectionmanager.h
Go to the documentation of this file.
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