// -------------------------------------------------------------------------- bool StructuredDataStorage::writeToFile(FilePtr& file, int objID, bool sizeStored) { DTypePtr pd = getDataForObject(objID); if (!pd.isNull()) { uint32_t size = pd->size(); // Write the size if (sizeStored) file->writeElem(&size, sizeof(uint32_t)); // write the data itself pd->serialize(file); return true; } return false; }
//------------------------------------------------------ void DatabaseService::save(const std::string &filename, uint32_t saveMask) { // just prepare the progress and delegate to the broadcast FilePtr fp = FilePtr(new StdFile(filename, File::FILE_RW)); FileGroupPtr tgtdb = FileGroupPtr(new DarkFileGroup()); LOG_DEBUG("DatabaseService::save - Save to file %s, mask %X", filename.c_str(), saveMask); mLoadingStatus.reset(); mLoadingStatus.totalCoarse += mListeners.size(); broadcastOnDBSave(tgtdb, saveMask); // And write the saveMask as FILE_TYPE FilePtr fpf = tgtdb->createFile( "FILE_TYPE", 0, 1); // The version is fixed, really. Nothing to invent here fpf->writeElem(&saveMask, sizeof(uint32_t)); // And Write! tgtdb->write(fp); }