//-------------------------------------------------------------- //-------------------------------------------------------------- void AppDataStore::Save() { std::unique_lock<std::mutex> lock(m_mutex); if(m_needsSynchonised == true) { // Convert to XML XML::Document doc; XML::Node* rootNode = doc.allocate_node(rapidxml::node_type::node_element); doc.append_node(rootNode); ParamDictionarySerialiser::ToXml(m_dictionary, rootNode); // Encrypt std::string strDocToBeEncrypted = XMLUtils::ToString(&doc); AESEncrypt::Data encryptedData = AESEncrypt::EncryptString(strDocToBeEncrypted, k_privateKey); // Write to disk FileSystem* pFileSystem = Application::Get()->GetFileSystem(); FileStreamSPtr pFileStream = pFileSystem->CreateFileStream(StorageLocation::k_saveData, k_filename, FileMode::k_writeBinary); if(pFileStream != nullptr) { pFileStream->Write(reinterpret_cast<const s8*>(encryptedData.m_data.get()), encryptedData.m_size); pFileStream.reset(); } m_needsSynchonised = false; } }
FileStreamSPtr StringToFile(StorageLocation ineStorageLocation, const std::string & instrPath, const std::string& instrFileOut) { FileStreamSPtr pFile = Application::Get()->GetFileSystem()->CreateFileStream(ineStorageLocation, instrPath, FileMode::k_write); if(!pFile || pFile->IsOpen() == false) { CS_LOG_WARNING("Utils::StringToFile: Could not open file: " + instrPath); return FileStreamSPtr(); } pFile->Write(instrFileOut); return pFile; }