bool NetworkManager::update() { if(!mIsStarted) return true; RakNet::Packet *packet; for (packet = mRakPeer->Receive(); packet; mRakPeer->DeallocatePacket(packet), packet = mRakPeer->Receive()) { switch (packet->data[0]) { case ID_CONNECTION_ATTEMPT_FAILED: Ogre::LogManager::getSingletonPtr()->logMessage(RealToys::logMessagePrefix + "ID_CONNECTION_ATTEMPT_FAILED", Ogre::LML_CRITICAL ); upAndRunning = false; mConnectAtemp = false; return false; break; case ID_NO_FREE_INCOMING_CONNECTIONS: Ogre::LogManager::getSingletonPtr()->logMessage(RealToys::logMessagePrefix + "ID_NO_FREE_INCOMING_CONNECTIONS", Ogre::LML_CRITICAL); upAndRunning = false; mConnectAtemp = false; return false; break; case ID_CONNECTION_REQUEST_ACCEPTED: Ogre::LogManager::getSingletonPtr()->logMessage(RealToys::logMessagePrefix + "ID_CONNECTION_REQUEST_ACCEPTED" ); if(!mServer) { ////this is a client, get the client external address relative to server //mNetworkID = mRakPeer->GetExternalID(packet->systemAddress); mConnectAtemp = false; } upAndRunning = true; return false; break; case ID_NEW_INCOMING_CONNECTION: { Ogre::LogManager::getSingletonPtr()->logMessage(RealToys::logMessagePrefix + "ID_NEW_INCOMING_CONNECTION from " + packet->systemAddress.ToString() ); //send current map name RakNet::BitStream bStream; RakNet::RakString mapName(GameLoadSaveManager::getSingletonPtr()->GetMapName().c_str()); RakNet::RakString mapVersion(GameLoadSaveManager::getSingletonPtr()->GetMapVersion().c_str()); bStream.Write((RakNet::MessageID)CUSTOMID_MAP_NAME); bStream.Write(mapName); bStream.Write(mapVersion); mRakPeer->Send(&bStream, LOW_PRIORITY, RELIABLE, 0, packet->systemAddress, false); break; } case ID_DISCONNECTION_NOTIFICATION: if(mServer) { Ogre::String id = packet->systemAddress.ToString(); Ogre::LogManager::getSingletonPtr()->logMessage(RealToys::logMessagePrefix + "ID_DISCONNECTION_NOTIFICATION from client " + id ); mAirplaneManager->destroyAirplane(packet->guid); } else { mConnectAtemp = false; Ogre::LogManager::getSingletonPtr()->logMessage(RealToys::logMessagePrefix + "ID_DISCONNECTION_NOTIFICATION from server " + packet->systemAddress.ToString() , Ogre::LML_CRITICAL); upAndRunning = false; return false; } break; case ID_CONNECTION_LOST: if(mServer) { Ogre::String id = packet->systemAddress.ToString(); Ogre::LogManager::getSingletonPtr()->logMessage(RealToys::logMessagePrefix + "ID_CONNECTION_LOST from client " + id, Ogre::LML_CRITICAL); mAirplaneManager->destroyAirplane(packet->guid); } else { mConnectAtemp = false; Ogre::LogManager::getSingletonPtr()->logMessage(RealToys::logMessagePrefix + "ID_CONNECTION_LOST from server " + packet->systemAddress.ToString(), Ogre::LML_CRITICAL); upAndRunning = false; return false; } break; case ID_UNCONNECTED_PONG: // Found the server if(!upAndRunning && mWaitForPong) { mWaitForPong = false; if(!mRakPeer->Connect(packet->systemAddress.ToString(false),packet->systemAddress.GetPort(),0,0,0)) { Ogre::LogManager::getSingletonPtr() ->logMessage(RealToys::logMessagePrefix + "Client peer connect failed"); mConnectAtemp = false; upAndRunning = false; return false; } mConnectAtemp = true; } break; default: recieveCustomPacket(packet); break; } } return upAndRunning; }
void QGeoTiledMapData::updateMapVersion() { Q_D(QGeoTiledMapData); d->changeMapVersion(mapVersion()); }