Changeset 9347 in orxonox.OLD for branches/proxy/src/lib/network/network_stream.h
- Timestamp:
- Jul 20, 2006, 11:43:27 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/proxy/src/lib/network/network_stream.h
r9246 r9347 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; … … 58 45 void startHandshake(); 59 46 47 /* synchronizeable interface */ 60 48 void connectSynchronizeable(Synchronizeable& sync); 61 49 void disconnectSynchronizeable(Synchronizeable& sync); 62 50 63 inline bool isServer() const { return (this->type == NET_SERVER)? true:false; } 64 inline bool isActive() const { return this->bActive; } 51 /* functions for the localhost settings */ 52 inline bool isMasterServer() const { return (this->pInfo->nodeType == NET_MASTER_SERVER)? true:false; } 53 inline bool isProxyServer() const { return (this->pInfo->nodeType == NET_PROXY_SERVER_ACTIVE)? true:false; } 54 inline bool isClient() const { return (this->pInfo->nodeType == NET_CLIENT)? true:false; } 55 // inline bool isActive() const { return this->bActive; } 56 inline int getMaxConnections(){ return SharedNetworkData::getInstance()->getMaxPlayer(); } 65 57 66 inline int getMaxConnections(){ return MAX_CONNECTIONS; } 58 /* functions for the peerInfo information retreival */ 59 inline bool isUserIdActive( int userID ) { return (peers.find(userID) != peers.end()); } 60 inline bool isUserMasterServer( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isMasterServer(); } 61 inline bool isUserProxyServer( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isProxyServer(); } 62 inline bool isUserClient( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isClient(); } 67 63 64 /* peering interface */ 65 inline PeerInfo & getPeerInfo( int userId ) { return peers[userId]; } 66 inline PeerInfo* getPeerInfo() { return this->pInfo; } 67 inline PeerList getPeerInfoList() { return this->peers; } 68 69 /* data processing*/ 68 70 virtual void processData(); 71 72 /* debugging */ 73 void debug(); 74 75 76 private: 69 77 70 78 inline SynchronizeableList::const_iterator getSyncBegin(){ return synchronizeables.begin(); } 71 79 inline SynchronizeableList::const_iterator getSyncEnd(){ return synchronizeables.end(); } 80 void cleanUpOldSyncList(); 72 81 int getSyncCount(); 73 82 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 83 void updateConnectionList(); 84 /* handle processes */ 84 85 void handleHandshakes(); 85 86 void handleUpstream( int tick ); 86 87 void handleDownstream(int tick ); 88 89 /* handle events*/ 87 90 void handleNewClient( int userId ); 88 void cleanUpOldSyncList();91 void handleReconnect( int userId ); 89 92 90 93 void writeToNewDict( byte * data, int length, bool upstream ); … … 92 95 93 96 private: 94 SynchronizeableList synchronizeables; 95 PeerList peers; 96 ServerSocket* serverSocket; 97 int type; 98 bool bActive; 99 std::list<int> freeSocketSlots; 97 PeerList peers; //!< list of the network node informations 100 98 101 int myHostId;99 PeerInfo* pInfo; //!< the info about the local peer node (not in the PeerList) 102 100 101 std::list<int> freeSocketSlots; //!< list of free sockets (to ensure not to resycle sockets) 103 102 int currentState; //!< current state id 104 103 105 NetworkGameManager* networkGameManager; 104 NetworkMonitor* networkMonitor; //!< the network monitor 105 NetworkGameManager* networkGameManager; //!< reference to the network game manager 106 ServerSocket* serverSocket; //!< the listening socket of the server 106 107 107 108 std::map<int,int> oldSynchronizeables; //!< used to save recently deleted sync ids to not recreate them 109 SynchronizeableList synchronizeables; //!< list of the synchronizeables 108 110 109 111 byte buf[UDP_PACKET_SIZE]; //!< used by handleUp/Downstream 110 112 byte compBuf[UDP_PACKET_SIZE]; //!< used by handleUp/Downstream 111 112 113 int remainingBytesToWriteToDict; //!< if > 0 NetworkStream will write packets to DATA/dicts/newdict 113 114 114 int dictServer;115 int dictClient;115 int dictServer; //!< the zip dict for the server 116 int dictClient; //!< the zip dict for the client 116 117 }; 117 118 #endif /* _NETWORK_STREAM */
Note: See TracChangeset
for help on using the changeset viewer.