Network.h
上传用户:jxpjxmjjw
上传日期:2009-12-07
资源大小:5877k
文件大小:2k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. // Copyright (C) 2004 Team Python
  2. //  
  3. // This program is free software; you can redistribute it and/or modify
  4. // it under the terms of the GNU General Public License as published by
  5. // the Free Software Foundation; either version 2 of the License, or
  6. // (at your option) any later version.
  7. // 
  8. // This program is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. // GNU General Public License for more details.
  12. // 
  13. // You should have received a copy of the GNU General Public License
  14. // along with this program; if not, write to the Free Software 
  15. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  16. #ifndef WOWPYTHONSERVER_NETWORK_H
  17. #define WOWPYTHONSERVER_NETWORK_H
  18. #include "Common.h"
  19. #include "Singleton.h"
  20. #include "Threads.h"
  21. #include <errno.h>
  22. #include "NetworkInterface.h"
  23. class Network : public Singleton < Network > {
  24.   friend class NetworkInterface;
  25. public:
  26.   /// Constructor
  27.   Network( );
  28.   /// Destructor
  29.   ~Network( );
  30.   /// Initialisation
  31.   void Initialise( );
  32.   /// Open a TCP port and listen for connections
  33.   NetworkInterface * createWorldListener( int port, void ( * callback ) ( NetworkInterface * ) = NULL );  
  34.   /// Close a socket
  35.   void removeNetworkInterface( NetworkInterface * );
  36.   /// Close all sockets
  37.   void clear( );
  38.   /// Set mConnected to false in all NetworkInterfaces
  39.   void disconnectAll( );
  40.   /// Get the name of an errorcode
  41.   char * getErrorName( uint32 code );
  42.   inline bool IsLoggingWorld() { return m_loggingWorld; };
  43.   inline void toggleWorldLogging() { m_loggingWorld = !m_loggingWorld; };
  44. private:
  45.   typedef std::set< NetworkInterface * > NetworkInterfaceSet;
  46.   /// Currently active Network Interfaces
  47.   NetworkInterfaceSet mInterfaces;
  48.   bool mConnected;
  49.   bool m_loggingWorld;
  50. };
  51. #endif