bool AEDocument::SaveDocument() { QFile file(projectFilePath()); if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) return false; QXmlStreamWriter* xmlWriter = new QXmlStreamWriter(); xmlWriter->setDevice(&file); xmlWriter->writeStartDocument(); xmlWriter->writeStartElement("AnimaEditorProject"); SaveProjectData(xmlWriter); SaveModels(xmlWriter); xmlWriter->writeEndElement(); xmlWriter->writeEndDocument(); delete xmlWriter; _newDocument = false; return true; }
// UpdateModel 此处不是增量更新 int ModelUpdater::UpdateModel(long WORKER, long WORKERNUM, long STEP) { char fname[128]; sprintf(fname, "/data/xce/friendranknew/data/user_models.dat_%ld", WORKER); FILE* fp = fopen(fname, "wb"); if (fp==NULL) { MCE_ERROR("ModelUpdater::UpdateModel(): "<<strerror(errno)<<": " << fname); return -1; } long totalUser = 0; long increUser = 0; int stepno = 0; map<USERID,UserModel> models; int usetime[8]; memset(usetime, 0, 8*sizeof(int)); time_t time_start = 0, time_end = 0; while (true) { //GetStepInterval(WORKER, WORKERNUM, STEP, stepno++, models); GetStepOverall(WORKER, WORKERNUM, STEP, stepno++, models); if ((increUser=models.size())>0) { time_start = time(NULL); ReadUserInfo(models, usetime); SaveModels(models, fp); models.clear(); time_end = time(NULL); totalUser += increUser; MCE_INFO("0:"<<usetime[0]<<" 1:"<<usetime[1]<<" 2:"<<usetime[2]<<" 3:"<<usetime[3]<<" 4:"<<usetime[4]<<" 5:"<<usetime[5]<<" 6:"<<usetime[6]<<" 7:"<<usetime[7]<<" | ["<<WORKER<<"] "<<time_end-time_start<<" | "<<increUser<<" / "<<totalUser); } if (increUser<STEP) { MCE_INFO("Worker["<<WORKER<<"] read "<<totalUser<<" users totally. byebye."); break; } } fclose(fp); return 0; }//