const RakNet::RakString operator+(const RakNet::RakString &lhs, const RakNet::RakString &rhs) { if (lhs.IsEmpty() && rhs.IsEmpty()) return RakString(&RakString::emptyString); if (lhs.IsEmpty()) { rhs.sharedString->refCount++; return RakString(rhs.sharedString); } if (rhs.IsEmpty()) { lhs.sharedString->refCount++; return RakString(lhs.sharedString); } size_t len1 = lhs.GetLength(); size_t len2 = rhs.GetLength(); size_t allocatedBytes = len1 + len2 + 1; allocatedBytes = RakString::GetSizeToAllocate(allocatedBytes); RakString::SharedString *sharedString; RakString::LockMutex(); // sharedString = RakString::pool.Allocate(); if (RakString::freeList.Size()==0) { //RakString::sharedStringFreeList=(RakString::SharedString*) rakRealloc_Ex(RakString::sharedStringFreeList,(RakString::sharedStringFreeListAllocationCount+1024)*sizeof(RakString::SharedString), __FILE__, __LINE__); unsigned i; for (i=0; i < 1024; i++) { // RakString::freeList.Insert(RakString::sharedStringFreeList+i+RakString::sharedStringFreeListAllocationCount); RakString::freeList.Insert((RakString::SharedString*)rakMalloc_Ex(sizeof(RakString::SharedString), __FILE__, __LINE__), __FILE__, __LINE__); } //RakString::sharedStringFreeListAllocationCount+=1024; } sharedString = RakString::freeList[RakString::freeList.Size()-1]; RakString::freeList.RemoveAtIndex(RakString::freeList.Size()-1); RakString::UnlockMutex(); const int smallStringSize = 128-sizeof(unsigned int)-sizeof(size_t)-sizeof(char*)*2; sharedString->bytesUsed=allocatedBytes; sharedString->refCount=1; if (allocatedBytes <= (size_t) smallStringSize) { sharedString->c_str=sharedString->smallString; } else { sharedString->bigString=(char*)rakMalloc_Ex(sharedString->bytesUsed, __FILE__, __LINE__); sharedString->c_str=sharedString->bigString; } strcpy(sharedString->c_str, lhs); strcat(sharedString->c_str, rhs); return RakString(sharedString); }
void Rackspace::UpdateServerNameOrPassword(RakNet::RakString serverId, RakNet::RakString newName, RakNet::RakString newPassword) { if (newName.IsEmpty() && newPassword.IsEmpty()) return; RakNet::RakString xml( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" "<server xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\"" ); if (newName.IsEmpty()==false) xml += RakNet::RakString(" name=\"%s\"", newName.C_String()); if (newPassword.IsEmpty()==false) xml += RakNet::RakString(" adminPass=\"%s\"", newPassword.C_String()); xml += " />"; AddOperation(RO_UPDATE_SERVER_NAME_OR_PASSWORD, "PUT", RakNet::RakString("servers/%s", serverId.C_String()), xml); }
bool TwoWayAuthentication::AddPassword(RakNet::RakString identifier, RakNet::RakString password) { if (password.IsEmpty()) return false; if (identifier.IsEmpty()) return false; if (password==identifier) return false; // Insecure if (passwords.GetIndexOf(identifier.C_String()).IsInvalid()==false) return false; // This identifier already in use passwords.Push(identifier, password,_FILE_AND_LINE_); return true; }
void Rackspace::CreateSharedIPGroup(RakNet::RakString name, RakNet::RakString optionalServerId) { RakNet::RakString xml( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" "<sharedIpGroup xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" name=\"%s\">", name.C_String()); if (optionalServerId.IsEmpty()==false) xml+=RakNet::RakString("<server id=\"%s\"/>", optionalServerId.C_String()); xml+="</sharedIpGroup>"; AddOperation(RO_CREATE_SHARED_IP_GROUP, "POST", "shared_ip_groups", xml); }
void TwoWayAuthentication::PushToUser(MessageID messageId, RakNet::RakString password, RakNet::AddressOrGUID remoteSystem) { RakNet::BitStream output; output.Write(messageId); if (password.IsEmpty()==false) output.Write(password); Packet *p = AllocatePacketUnified(output.GetNumberOfBytesUsed()); p->systemAddress=remoteSystem.systemAddress; p->systemAddress.systemIndex=(SystemIndex)-1; p->guid=remoteSystem.rakNetGuid; p->wasGeneratedLocally=true; memcpy(p->data, output.GetData(), output.GetNumberOfBytesUsed()); rakPeerInterface->PushBackPacket(p, true); }
void PostgreSQLInterface::EncodeQueryUpdate(const char *colName, float value, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat) { (void)numParams; (void)paramData; (void)paramLength; (void)paramFormat; if (valueStr.IsEmpty()==false) { valueStr += ", "; } valueStr += colName; valueStr += " = "; valueStr += FormatString("%f", value); }
void PostgreSQLInterface::EncodeQueryInput(const char *colName, int value, RakNet::RakString ¶mTypeStr, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat) { (void)numParams; (void)paramData; (void)paramLength; (void)paramFormat; if (paramTypeStr.IsEmpty()==false) { paramTypeStr += ", "; valueStr += ", "; } paramTypeStr += colName; valueStr += FormatString("%i", value); }
void PHPDirectoryServer2::SetField( RakNet::RakString columnName, RakNet::RakString value ) { if (columnName.IsEmpty()) return; if (columnName==GAME_NAME_COMMAND || columnName==GAME_PORT_COMMAND || columnName==LAST_UPDATE_COMMAND) { RakAssert("PHPDirectoryServer2::SetField attempted to set reserved column name" && 0); return; } fields.Set(columnName, value); }
void PostgreSQLInterface::EncodeQueryUpdate(const char *colName, const char *str, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat, const char *type) { if (str==0 || str[0]==0) return; if (valueStr.IsEmpty()==false) { valueStr += ", "; } valueStr += colName; valueStr+=" = "; valueStr+=FormatString("$%i::%s", numParams+1, type); paramData[numParams]=(char*) str; paramLength[numParams]=(int) strlen(str); paramFormat[numParams]=PQEXECPARAM_FORMAT_TEXT; numParams++; }
void Lobby2Server::OnChangeHandle(Lobby2ServerCommand *command, bool calledFromThread) { if (calledFromThread) { ThreadAction ta; ta.action=L2MID_Client_ChangeHandle; ta.command=*command; threadActionQueueMutex.Lock(); threadActionQueue.Push(ta, __FILE__, __LINE__ ); threadActionQueueMutex.Unlock(); return; } unsigned int i; RakNet::RakString oldHandle; for (i=0; i < users.Size(); i++) { if (users[i]->callerUserId==command->callerUserId) { oldHandle=users[i]->userName; users[i]->userName=command->callingUserName; break; } } if (oldHandle.IsEmpty()) return; #if defined(__INTEGRATE_LOBBY2_WITH_ROOMS_PLUGIN) // Tell the rooms plugin about the handle change if (roomsPlugin) { roomsPlugin->ChangeHandle(oldHandle, command->callingUserName); } else if (roomsPluginAddress!=UNASSIGNED_SYSTEM_ADDRESS) { RakNet::BitStream bs; RoomsPlugin::SerializeChangeHandle(oldHandle,command->callingUserName,&bs); SendUnified(&bs,packetPriority, RELIABLE_ORDERED, orderingChannel, roomsPluginAddress, false); } #endif }
bool SQLite3ServerPlugin::AddDBHandle(RakNet::RakString dbIdentifier, sqlite3 *dbHandle, bool dbAutoCreated) { if (dbIdentifier.IsEmpty()) return false; DataStructures::DefaultIndexType idx = dbHandles.GetInsertionIndex(dbIdentifier); if (idx==(DataStructures::DefaultIndexType)-1) return false; NamedDBHandle ndbh; ndbh.dbHandle=dbHandle; ndbh.dbIdentifier=dbIdentifier; ndbh.dbAutoCreated=dbAutoCreated; ndbh.whenCreated=RakNet::GetTimeMS(); dbHandles.InsertAtIndex(ndbh,idx,__FILE__,__LINE__); #ifdef SQLite3_STATEMENT_EXECUTE_THREADED if (sqlThreadPool.WasStarted()==false) sqlThreadPool.StartThreads(1,0); #endif return true; }
void PostgreSQLInterface::EncodeQueryUpdate(const char *colName, char *binaryData, int binaryDataLength, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat) { if (binaryData==0 || binaryDataLength==0) return; if (binaryData==0) binaryDataLength=0; if (valueStr.IsEmpty()==false) { valueStr += ", "; } valueStr += colName; valueStr += " = "; valueStr+=FormatString("$%i::bytea", numParams+1); paramData[numParams]=binaryData; paramLength[numParams]=binaryDataLength; paramFormat[numParams]=PQEXECPARAM_FORMAT_BINARY; numParams++; }
void PostgreSQLInterface::EncodeQueryInput(const char *colName, const char *str, RakNet::RakString ¶mTypeStr, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat, bool writeEmpty, const char *type) { if (writeEmpty==false && (str==0 || str[0]==0)) return; static char *emptyStr=(char*)""; static char *emptyDate=(char*)"01/01/01"; if (paramTypeStr.IsEmpty()==false) { paramTypeStr += ", "; valueStr += ", "; } paramTypeStr += colName; valueStr+=FormatString("$%i::%s", numParams+1, type); if (writeEmpty && (str==0 || str[0]==0)) { if (strcmp(type,"date")==0) { paramData[numParams]=emptyDate; paramLength[numParams]=(int)strlen(emptyDate); } else { paramData[numParams]=emptyStr; paramLength[numParams]=0; } } else { paramData[numParams]=(char*) str; paramLength[numParams]=(int) strlen(str); } paramFormat[numParams]=PQEXECPARAM_FORMAT_TEXT; numParams++; }
void InitialData( RakNet::BitStream * pBitStream, RakNet::Packet * pPacket ) { // Read the player id EntityId playerId; pBitStream->ReadCompressed( playerId ); // Read the player colour unsigned int uiColour; pBitStream->Read( uiColour ); // Read the server name string RakNet::RakString strServerName; pBitStream->Read( strServerName ); // Read the max player count int iMaxPlayers; pBitStream->Read( iMaxPlayers ); // Read the http server address RakNet::RakString strHttpServer; pBitStream->Read( strHttpServer ); // Read the http server port int iPort; pBitStream->Read( iPort ); // Set the season pCore->SetSummer ( pBitStream->ReadBit() ); CLogFile::Printf ( "Season: %s", (pCore->IsSummer () ? "Summer" : "Winter") ); // Read the weather RakNet::RakString strWeather; pBitStream->Read ( strWeather ); // Set the localplayer id pCore->GetPlayerManager()->GetLocalPlayer()->SetId( playerId ); // Set the localplayer colour pCore->GetPlayerManager()->GetLocalPlayer()->SetColour( uiColour ); // Set the server name string pCore->SetServerName( String( strServerName ) ); // Set the server max player count pCore->SetServerMaxPlayers( iMaxPlayers ); // Set the file transfer information pCore->GetFileTransferManager()->SetServerInformation( strHttpServer.IsEmpty() ? pCore->GetHost() : strHttpServer.C_String(), iPort ); // pCore->GetChat()->AddInfoMessage( "Successfully connected to %s.", strServerName.C_String() ); // Get the server folder string String strServerFolder = SharedUtility::GetAbsolutePath( SharedUtility::GetClientScriptFolder( pCore->GetHost(), pCore->GetPort() ) ); // Does the folder not exist? if( !SharedUtility::Exists( strServerFolder.Get() ) ) { // Create the folder SharedUtility::CreateDirectory( strServerFolder.Get() ); } // Set the weather pCore->GetGame()->ChangeWeather ( strWeather.C_String (), 1000 ); }
void CDemo::run() { core::dimension2d<u32> resolution ( 800, 600 ); if ( driverType == video::EDT_BURNINGSVIDEO || driverType == video::EDT_SOFTWARE ) { resolution.Width = 640; resolution.Height = 480; } irr::SIrrlichtCreationParameters params; params.DriverType=driverType; params.WindowSize=resolution; params.Bits=32; params.Fullscreen=fullscreen; params.Stencilbuffer=shadows; params.Vsync=vsync; params.AntiAlias=aa; params.EventReceiver=this; device = createDeviceEx(params); if (!device) return; if (device->getFileSystem()->existFile("irrlicht.dat")) device->getFileSystem()->addFileArchive("irrlicht.dat", true, true, io::EFAT_ZIP); else device->getFileSystem()->addFileArchive(IRRLICHT_MEDIA_PATH "irrlicht.dat", true, true, io::EFAT_ZIP); if (device->getFileSystem()->existFile("map-20kdm2.pk3")) device->getFileSystem()->addFileArchive("map-20kdm2.pk3", true, true, io::EFAT_ZIP); else device->getFileSystem()->addFileArchive(IRRLICHT_MEDIA_PATH "map-20kdm2.pk3", true, true, io::EFAT_ZIP); video::IVideoDriver* driver = device->getVideoDriver(); scene::ISceneManager* smgr = device->getSceneManager(); gui::IGUIEnvironment* guienv = device->getGUIEnvironment(); device->setWindowCaption(L"Irrlicht Engine Demo"); // set ambient light smgr->setAmbientLight ( video::SColorf ( 0x00c0c0c0 ) ); // wchar_t tmp[255]; // RakNet startup char dest[1024]; memset(dest,0,sizeof(dest)); wcstombs(dest, playerName.c_str(), playerName.size()); InstantiateRakNetClasses(); // Hook RakNet stuff into this class playerReplica->playerName=RakNet::RakString(dest); playerReplica->demo=this; replicaManager3->demo=this; CalculateSyndeyBoundingBox(); // draw everything s32 now = 0; sceneStartTime = device->getTimer()->getTime(); while(device->run() && driver) { // RakNet: Render even if not active, multiplayer never stops //if (device->isWindowActive()) { #ifdef USE_IRRKLANG // update 3D position for sound engine scene::ICameraSceneNode* cam = smgr->getActiveCamera(); if (cam && irrKlang) irrKlang->setListenerPosition(cam->getAbsolutePosition(), cam->getTarget()); #endif // load next scene if necessary now = device->getTimer()->getTime(); if (now - sceneStartTime > timeForThisScene && timeForThisScene!=-1) switchToNextScene(); createParticleImpacts(); driver->beginScene(timeForThisScene != -1, true, backColor); smgr->drawAll(); guienv->drawAll(); driver->endScene(); /* // write statistics static s32 lastfps = 0; s32 nowfps = driver->getFPS(); swprintf(tmp, 255, L"%ls fps:%3d triangles:%0.3f mio", driver->getName(), driver->getFPS(), (f32) driver->getPrimitiveCountDrawn( 1 ) * ( 1.f / 1000000.f ) ); if ( nowfps != lastfps ) { device->setWindowCaption ( tmp ); lastfps = nowfps; } */ RakNet::RakString curMsg = GetCurrentMessage(); if (curMsg.IsEmpty()==false) { wchar_t dest[1024]; memset(dest,0,sizeof(dest)); mbstowcs(dest, curMsg.C_String(), curMsg.GetLength()); statusText->setText(dest); } else { // statusText->setText(tmp); statusText->setText(0); } } // RakNet per tick update UpdateRakNet(); } // RakNet shutdown DeinitializeRakNetClasses(); device->drop(); }