Changeset 8228 in orxonox.OLD for trunk/src/lib/network
- Timestamp:
- Jun 8, 2006, 11:19:08 AM (19 years ago)
- Location:
- trunk/src/lib/network
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/network/message_manager.cc
r8068 r8228 17 17 18 18 #include "message_manager.h" 19 20 #include "network_stream.h" 19 21 20 22 using namespace std; … … 312 314 recieverType == RT_ALL_NOT_ME || 313 315 recieverType == RT_USER && it->first == reciever || 314 recieverType == RT_NOT_USER && it->first != reciever 316 recieverType == RT_NOT_USER && it->first != reciever || 317 recieverType == RT_SERVER && getNetworkStream()->isUserServer( it->first ) 315 318 ) 316 319 { -
trunk/src/lib/network/message_manager.h
r8147 r8228 30 30 TESTMESSAGEID = 1, 31 31 MSGID_DELETESYNCHRONIZEABLE, 32 MSGID_PREFEREDTEAM 32 MSGID_PREFEREDTEAM, 33 MSGID_CHANGEPLAYERNAME 33 34 }; 34 35 … … 40 41 RT_ALL_ME, //!< message is sent to all users 41 42 RT_USER, //!< message is only sent to reciever 42 RT_NOT_USER //!< message is sent to all but reciever 43 RT_NOT_USER, //!< message is sent to all but reciever 44 RT_SERVER //!< message is sent to server only 43 45 }; 44 46 -
trunk/src/lib/network/network_game_manager.cc
r8147 r8228 112 112 stats->setPlayableUniqueId( playable.getUniqueID() ); 113 113 stats->setModelFileName( playableModel ); 114 115 return true; 114 116 } 115 117 … … 122 124 bool NetworkGameManager::signalLeftPlayer(int userID) 123 125 { 124 delete PlayerStats::getStats( userID )->getPlayable(); 125 delete PlayerStats::getStats( userID ); 126 if ( PlayerStats::getStats( userID ) ) 127 { 128 if ( PlayerStats::getStats( userID )->getPlayable() ) 129 delete PlayerStats::getStats( userID )->getPlayable(); 130 delete PlayerStats::getStats( userID ); 131 } 132 133 return true; 126 134 } 127 135 … … 165 173 return true; 166 174 } 167 175 168 176 delete dynamic_cast<Synchronizeable*>(*it); 169 177 return true; 170 178 } 171 179 } 180 181 return true; 172 182 } 173 183 … … 210 220 211 221 NetworkGameManager::getInstance()->setPreferedTeam( userId, teamId ); 222 223 return true; 212 224 } 213 225 … … 220 232 221 233 stats.setPreferedTeamId( teamId ); 222 223 234 } 224 235 -
trunk/src/lib/network/network_manager.cc
r8147 r8228 51 51 52 52 /* initialize the references */ 53 this->netStreamList = NULL; 54 this->syncList = NULL; 55 this->defaultSyncStream = NULL; 53 this->networkStream = NULL; 56 54 this->sharedNetworkData = SharedNetworkData::getInstance(); 57 55 this->elapsedTime = 0.0f; … … 71 69 */ 72 70 NetworkManager::~NetworkManager() 73 {} 71 { 72 if ( this->networkStream ) 73 { 74 delete this->networkStream; 75 this->networkStream = NULL; 76 } 77 } 74 78 75 79 … … 79 83 void NetworkManager::initialize() 80 84 { 81 /* get the synchronizeable list from the class list */82 this->netStreamList = ClassList::getList(CL_SYNCHRONIZEABLE);83 85 PRINTF(0)("NetworkManager initzalized\n"); 84 85 86 } 86 87 … … 101 102 int NetworkManager::establishConnection(const std::string & name, unsigned int port) 102 103 { 103 this-> defaultSyncStream = new NetworkStream( name, port );104 this->sharedNetworkData->setDefaultSyncStream(this-> defaultSyncStream);105 this-> defaultSyncStream->startHandshake();104 this->networkStream = new NetworkStream( name, port ); 105 this->sharedNetworkData->setDefaultSyncStream(this->networkStream); 106 this->networkStream->startHandshake(); 106 107 return 1; 107 108 } … … 116 117 this->sharedNetworkData->setHostID(0); 117 118 this->sharedNetworkData->setGameServer(true); 118 this-> defaultSyncStream = new NetworkStream(port);119 this->sharedNetworkData->setDefaultSyncStream(this-> defaultSyncStream);120 this-> defaultSyncStream->createNetworkGameManager();119 this->networkStream = new NetworkStream(port); 120 this->sharedNetworkData->setDefaultSyncStream(this->networkStream); 121 this->networkStream->createNetworkGameManager(); 121 122 PRINTF(0)("CREATE SERVER\n"); 122 123 SDL_Delay(20); … … 127 128 void NetworkManager::connectSynchronizeable(Synchronizeable& sync) 128 129 { 129 if( this-> defaultSyncStream)130 this-> defaultSyncStream->connectSynchronizeable(sync);130 if( this->networkStream) 131 this->networkStream->connectSynchronizeable(sync); 131 132 } 132 133 … … 143 144 this->elapsedTime = 0.0f; 144 145 145 if (this->netStreamList != NULL || (this->netStreamList = ClassList::getList(CL_NETWORK_STREAM)) != NULL) 146 { 147 std::list<BaseObject*>::const_iterator stream; 148 for (stream = this->netStreamList->begin(); stream != this->netStreamList->end(); ++stream) 149 if( static_cast<NetworkStream*>(*stream)->isActive()) 150 static_cast<NetworkStream*>(*stream)->processData(); 151 } 146 if ( networkStream->isActive() ) 147 networkStream->processData(); 152 148 153 149 NetworkGameManager::getInstance()->tick( this->elapsedTime ); … … 162 158 { 163 159 PRINT(0)("=================Network::debug()=========\n"); 164 this-> defaultSyncStream->debug();160 this->networkStream->debug(); 165 161 PRINT(0)("===========================================\n"); 166 162 } -
trunk/src/lib/network/network_manager.h
r7954 r8228 55 55 56 56 private: 57 const std::list<BaseObject*>* netStreamList; // list with refs to all network streams58 const std::list<BaseObject*>* syncList; // list of synchronizeables59 57 static NetworkManager* singletonRef; //!< Pointer to the only instance of this Class 60 NetworkStream* defaultSyncStream; //!< FIXME: this is only for testing purposes58 NetworkStream* networkStream; //!< pointer to network stream 61 59 62 60 SharedNetworkData* sharedNetworkData; //!< reference to the shared data -
trunk/src/lib/network/network_stream.cc
r8068 r8228 105 105 serverSocket->close(); 106 106 delete serverSocket; 107 serverSocket = NULL; 107 108 } 108 109 … … 123 124 } 124 125 125 if ( serverSocket ) 126 { 127 delete serverSocket; 128 serverSocket = NULL; 129 } 130 126 for ( SynchronizeableList::const_iterator it = getSyncBegin(); it != getSyncEnd(); it ++ ) 127 (*it)->setNetworkStream( NULL ); 131 128 } 132 129 … … 264 261 265 262 //check if connections are ok else remove them 266 for ( PeerList::iterator it = peers.begin(); it != peers.end(); it++)263 for ( PeerList::iterator it = peers.begin(); it != peers.end(); ) 267 264 { 268 265 if ( … … 297 294 298 295 freeSocketSlots.push_back( it->second.userId ); 299 300 } 296 297 PeerList::iterator delit = it; 298 it++; 299 300 peers.erase( delit ); 301 302 continue; 303 } 304 305 it++; 301 306 } 302 307 … … 651 656 } 652 657 } 658 653 659 654 660 int n = sync->setStateDiff( peer->second.userId, buf+offset, syncDataLength, state, fromState ); … … 664 670 } 665 671 666 //TODO REMOVE THIS667 int saveOffset = offset;668 672 669 673 for ( SynchronizeableList::iterator it = synchronizeables.begin(); it != synchronizeables.end(); it++ ) … … 682 686 assert( peer->second.lastRecvedState < state ); 683 687 peer->second.lastRecvedState = state; 684 685 assert( saveOffset == offset ); 686 688 687 689 } 688 690 -
trunk/src/lib/network/player_stats.cc
r8147 r8228 21 21 #include "player.h" 22 22 #include "state.h" 23 #include "shared_network_data.h" 23 24 24 25 … … 85 86 this->setPlayableUniqueId( this->playableUniqueId ); 86 87 87 PRINTF(0)("uniqueID changed %d %d \n", userId, getHostID());88 PRINTF(0)("uniqueID changed %d %d %d\n", userId, getHostID(), getUniqueID()); 88 89 } 89 90 } … … 99 100 100 101 if ( !list ) 102 { 101 103 return NULL; 104 } 102 105 103 106 for ( std::list<BaseObject*>::const_iterator it = list->begin(); it != list->end(); it++ ) … … 108 111 } 109 112 } 110 111 //TODO maybe we should create an object here112 113 113 114 return NULL; … … 133 134 { 134 135 this->playable = dynamic_cast<Playable*>(*it); 136 //TODO when OM_PLAYERS is ticked add line: 137 //this->playable->toList( OM_PLAYERS ); 135 138 break; 136 139 } … … 138 141 139 142 if ( this->playable && userId == getHostID() ) 143 { 140 144 State::getPlayer()->setPlayable( this->playable ); 145 } 141 146 142 147 this->playableUniqueId = uniqueId; -
trunk/src/lib/network/synchronizeable.cc
r8147 r8228 369 369 void Synchronizeable::cleanUpUser( int userId ) 370 370 { 371 for ( UserStateHistory::iterator it = sentStates.begin(); it != sentStates.end(); it++ ) 372 { 373 for ( StateHistory::iterator it2 = it->begin(); it2 != it->end(); it2++ ) 374 { 375 if ( (*it2)->data ) 376 delete [] (*it2)->data; 377 (*it2)->data = NULL; 378 379 delete *it2; 380 } 381 } 382 383 sentStates.clear(); 384 385 for ( UserStateHistory::iterator it = recvStates.begin(); it != recvStates.end(); it++ ) 386 { 387 for ( StateHistory::iterator it2 = it->begin(); it2 != it->end(); it2++ ) 388 { 389 if ( (*it2)->data ) 390 delete [] (*it2)->data; 391 (*it2)->data = NULL; 392 393 delete *it2; 394 } 395 } 396 397 recvStates.clear(); 371 if ( recvStates.size() > userId ) 372 { 373 for ( std::list<StateHistoryEntry*>::iterator it = recvStates[userId].begin(); it != recvStates[userId].end(); it++ ) 374 { 375 if ( (*it)->data ) 376 delete [] (*it)->data; 377 (*it)->data = NULL; 378 379 delete *it; 380 } 381 recvStates[userId].clear(); 382 } 383 384 if ( sentStates.size() > userId ) 385 { 386 387 for ( std::list<StateHistoryEntry*>::iterator it = sentStates[userId].begin(); it != sentStates[userId].end(); it++ ) 388 { 389 if ( (*it)->data ) 390 delete [] (*it)->data; 391 (*it)->data = NULL; 392 393 delete *it; 394 } 395 sentStates[userId].clear(); 396 } 398 397 } 399 398 -
trunk/src/lib/network/udp_server_socket.cc
r7954 r8228 44 44 UdpServerSocket::~UdpServerSocket( ) 45 45 { 46 for ( int i = 0; i < packetBuffer.size(); i++ )46 for ( int i = 0; i < (int)packetBuffer.size(); i++ ) 47 47 removeUserPackets( i ); 48 48 … … 99 99 { 100 100 101 for ( int i = 0; i < packetBuffer.size(); i++ )101 for ( int i = 0; i < (int)packetBuffer.size(); i++ ) 102 102 removeUserPackets( i ); 103 103 … … 115 115 void UdpServerSocket::removeUserPackets( int userId ) 116 116 { 117 if ( userId >= packetBuffer.size() )117 if ( userId >= (int)packetBuffer.size() ) 118 118 return; 119 119 … … 141 141 res.length = 0; 142 142 143 if ( packetBuffer.size() > userId &&packetBuffer[userId].size() > 0 )143 if ( (int)packetBuffer.size() > userId && (int)packetBuffer[userId].size() > 0 ) 144 144 { 145 145 res.data = packetBuffer[userId].front().data; 146 146 res.length = packetBuffer[userId].front().length; 147 147 packetBuffer[userId].pop_front(); 148 149 if ( res.length == 0 ) 150 res.length = -1; 148 151 } 149 152 … … 158 161 int UdpServerSocket::getPacketCount( int userId ) 159 162 { 160 if ( userId >= packetBuffer.size() )163 if ( userId >= (int)packetBuffer.size() ) 161 164 return -1; 162 165 … … 179 182 } 180 183 181 if ( userId < packetBuffer.size() )184 if ( userId < (int)packetBuffer.size() ) 182 185 removeUserPackets( userId ); 183 186 184 if ( packetBuffer.size() <= userId )187 if ( (int)packetBuffer.size() <= userId ) 185 188 packetBuffer.resize( userId + 1 ); 186 189 187 if ( userList.size() <= userId )190 if ( (int)userList.size() <= userId ) 188 191 userList.resize( userId + 1 ); 189 192 … … 199 202 removeUserPackets( userId ); 200 203 201 if ( userId >= userList.size() )204 if ( userId >= (int)userList.size() ) 202 205 return; 203 206 … … 244 247 bool isNewConnection = false; 245 248 246 for ( userId =0; userId < userList.size(); userId++ )249 for ( userId =0; userId < (int)userList.size(); userId++ ) 247 250 if ( userList[userId].host == packet->address.host && userList[userId].port == packet->address.port ) 248 251 break; 249 252 250 if ( userId >= userList.size() )253 if ( userId >= (int)userList.size() ) 251 254 { 252 255 … … 260 263 } 261 264 262 for ( userId =0; userId < userList.size(); userId++ )265 for ( userId =0; userId < (int)userList.size(); userId++ ) 263 266 if ( userList[userId].host == 0 && userList[userId].port == 0 ) 264 267 break; … … 281 284 else 282 285 { 283 if ( isNewConnection )284 continue;285 286 286 networkPacket.data = NULL; 287 287 } -
trunk/src/lib/network/udp_socket.cc
r7954 r8228 81 81 UdpSocket::~UdpSocket( ) 82 82 { 83 this->disconnectServer(); 84 83 85 if ( serverSocket ) 84 86 serverSocket->removeUser( userId ); 85 86 disconnectServer(); 87 87 88 88 if ( this->packet ) 89 89 SDLNet_FreePacket( this->packet ); … … 128 128 return; 129 129 } 130 130 } 131 132 /** 133 * disconnect from server 134 */ 135 void UdpSocket::disconnectServer( ) 136 { 137 PRINTF(0)("disconnect\n"); 131 138 writePacket( NULL, 0 ); 132 }133 134 /**135 * disconnect from server136 */137 void UdpSocket::disconnectServer( )138 {139 139 SDLNet_UDP_Unbind( socket, -1 ); 140 140 SDLNet_UDP_Close( socket ); … … 171 171 packet->len = length; 172 172 173 if ( SDLNet_UDP_Send( socket, 1, packet) == 0 )173 if ( socket && SDLNet_UDP_Send( socket, 1, packet) == 0 ) 174 174 { 175 175 PRINTF(1)("SDLNet_UDP_Send: %s\n", SDLNet_GetError()); … … 196 196 NetworkPacket networkPacket = serverSocket->getPacket( this->userId ); 197 197 198 if ( networkPacket.length == -1 ) 199 { 200 this->disconnectServer(); 201 return 0; 202 } 203 198 204 if ( networkPacket.length > 0 ) 199 205 { … … 218 224 assert( packet->len <= maxLength ); 219 225 226 if ( packet->len == 0 ) 227 { 228 this->disconnectServer(); 229 return 0; 230 } 231 220 232 memcpy( data, packet->data, packet->len ); 221 233 return packet->len;
Note: See TracChangeset
for help on using the changeset viewer.