Changeset 9406 in orxonox.OLD for trunk/src/lib/network/network_stream.h
- Timestamp:
- Jul 24, 2006, 11:09:47 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/network/network_stream.h
r9246 r9406 14 14 #include "server_socket.h" 15 15 #include "handshake.h" 16 #include " connection_monitor.h"16 #include "monitor/connection_monitor.h" 17 17 #include "udp_server_socket.h" 18 #include "peer_info.h" 19 20 #include "shared_network_data.h" 18 21 19 22 class Synchronizeable; … … 21 24 class ServerSocket; 22 25 class NetworkGameManager; 26 class NetworkMonitor; 23 27 24 //!< this structure contains informations about the network node25 class PeerInfo26 {27 public:28 PeerInfo() { clear(); }29 void clear() { userId = 0; isServer = false; socket = NULL; handshake = NULL; lastAckedState = 0; lastRecvedState = 0; connectionMonitor = NULL; }30 31 32 public:33 int userId;34 bool isServer;35 NetworkSocket * socket;36 Handshake * handshake;37 ConnectionMonitor * connectionMonitor;38 int lastAckedState;39 int lastRecvedState;40 };41 28 42 29 typedef std::list<Synchronizeable*> SynchronizeableList; … … 49 36 public: 50 37 NetworkStream(); 51 NetworkStream( std::string host, int port);52 NetworkStream( int port);38 NetworkStream(int nodeType); 39 virtual ~NetworkStream(); 53 40 54 virtual ~NetworkStream();55 41 void init(); 42 43 void connectToMasterServer(std::string host, int port); 44 void connectToProxyServer(std::string host, int port); 45 void createServer(int port); 56 46 57 47 void createNetworkGameManager(); 58 48 void startHandshake(); 59 49 50 /* synchronizeable interface */ 60 51 void connectSynchronizeable(Synchronizeable& sync); 61 52 void disconnectSynchronizeable(Synchronizeable& sync); 62 53 63 inline bool isServer() const { return (this->type == NET_SERVER)? true:false; } 64 inline bool isActive() const { return this->bActive; } 54 inline int getMaxConnections(){ return SharedNetworkData::getInstance()->getMaxPlayer(); } 65 55 66 inline int getMaxConnections(){ return MAX_CONNECTIONS; } 56 /* functions for the peerInfo information retreival */ 57 inline bool isUserIdActive( int userID ) { return (peers.find(userID) != peers.end()); } 58 inline bool isUserMasterServer( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isMasterServer(); } 59 inline bool isUserProxyServer( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isProxyServer(); } 60 inline bool isUserClient( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isClient(); } 67 61 62 /* peering interface */ 63 inline PeerInfo & getPeerInfo( int userId ) { return peers[userId]; } 64 inline PeerInfo* getPeerInfo() { return this->pInfo; } 65 inline PeerList getPeerInfoList() { return this->peers; } 66 67 /* data processing*/ 68 68 virtual void processData(); 69 70 /* debugging */ 71 void debug(); 72 73 74 private: 69 75 70 76 inline SynchronizeableList::const_iterator getSyncBegin(){ return synchronizeables.begin(); } 71 77 inline SynchronizeableList::const_iterator getSyncEnd(){ return synchronizeables.end(); } 78 void cleanUpOldSyncList(); 72 79 int getSyncCount(); 73 80 74 inline bool isUserIdActive( int userID ) { return (peers.find(userID) != peers.end()); }75 inline bool isUserServer( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isServer; }76 77 void debug();78 79 inline PeerInfo & getPeerInfo( int userId ) { return peers[userId]; }80 81 82 private:83 81 void updateConnectionList(); 82 /* handle processes */ 84 83 void handleHandshakes(); 85 84 void handleUpstream( int tick ); 86 85 void handleDownstream(int tick ); 86 87 /* handle events*/ 87 88 void handleNewClient( int userId ); 88 void cleanUpOldSyncList();89 void handleReconnect( int userId ); 89 90 90 91 void writeToNewDict( byte * data, int length, bool upstream ); … … 92 93 93 94 private: 94 SynchronizeableList synchronizeables; 95 PeerList peers; 96 ServerSocket* serverSocket; 97 int type; 98 bool bActive; 99 std::list<int> freeSocketSlots; 95 PeerList peers; //!< list of the network node informations 100 96 101 int myHostId;97 PeerInfo* pInfo; //!< the info about the local peer node (not in the PeerList) 102 98 99 std::list<int> freeSocketSlots; //!< list of free sockets (to ensure not to resycle sockets) 103 100 int currentState; //!< current state id 104 101 105 NetworkGameManager* networkGameManager; 102 NetworkMonitor* networkMonitor; //!< the network monitor 103 NetworkGameManager* networkGameManager; //!< reference to the network game manager 104 ServerSocket* serverSocket; //!< the listening socket of the server 106 105 107 106 std::map<int,int> oldSynchronizeables; //!< used to save recently deleted sync ids to not recreate them 107 SynchronizeableList synchronizeables; //!< list of the synchronizeables 108 108 109 109 byte buf[UDP_PACKET_SIZE]; //!< used by handleUp/Downstream 110 110 byte compBuf[UDP_PACKET_SIZE]; //!< used by handleUp/Downstream 111 112 111 int remainingBytesToWriteToDict; //!< if > 0 NetworkStream will write packets to DATA/dicts/newdict 113 112 114 int dictServer;115 int dictClient;113 int dictServer; //!< the zip dict for the server 114 int dictClient; //!< the zip dict for the client 116 115 }; 117 116 #endif /* _NETWORK_STREAM */
Note: See TracChangeset
for help on using the changeset viewer.