int CLIENT_STATE::write_state(MIOFILE& f) { unsigned int i, j; int retval; #ifdef SIM fprintf(stderr, "simulator shouldn't write state file\n"); exit(1); #endif f.printf("<client_state>\n"); retval = host_info.write(f, true, true); if (retval) return retval; retval = time_stats.write(f, false); if (retval) return retval; retval = net_stats.write(f); if (retval) return retval; for (j=0; j<projects.size(); j++) { PROJECT* p = projects[j]; retval = p->write_state(f); if (retval) return retval; for (i=0; i<apps.size(); i++) { if (apps[i]->project == p) { retval = apps[i]->write(f); if (retval) return retval; } } for (i=0; i<file_infos.size(); i++) { if (file_infos[i]->project != p) continue; FILE_INFO* fip = file_infos[i]; // don't write file infos for anonymous platform app files // if (fip->anonymous_platform_file) continue; retval = fip->write(f, false); if (retval) return retval; } for (i=0; i<app_versions.size(); i++) { if (app_versions[i]->project == p) { app_versions[i]->write(f); } } for (i=0; i<workunits.size(); i++) { if (workunits[i]->project == p) workunits[i]->write(f); } for (i=0; i<results.size(); i++) { if (results[i]->project == p) results[i]->write(f, false); } p->write_project_files(f); #ifdef ENABLE_AUTO_UPDATE if (auto_update.present && auto_update.project==p) { auto_update.write(f); } #endif } active_tasks.write(f); f.printf( "<platform_name>%s</platform_name>\n" "<core_client_major_version>%d</core_client_major_version>\n" "<core_client_minor_version>%d</core_client_minor_version>\n" "<core_client_release>%d</core_client_release>\n" "<user_run_request>%d</user_run_request>\n" "<user_run_prev_request>%d</user_run_prev_request>\n" "<user_gpu_request>%d</user_gpu_request>\n" "<user_gpu_prev_request>%d</user_gpu_prev_request>\n" "<user_network_request>%d</user_network_request>\n" "<new_version_check_time>%f</new_version_check_time>\n" "<all_projects_list_check_time>%f</all_projects_list_check_time>\n", get_primary_platform(), core_client_version.major, core_client_version.minor, core_client_version.release, cpu_run_mode.get_perm(), cpu_run_mode.get_prev(), gpu_run_mode.get_perm(), gpu_run_mode.get_prev(), network_run_mode.get_perm(), new_version_check_time, all_projects_list_check_time ); if (strlen(language)) { f.printf("<language>%s</language>\n", language); } if (newer_version.size()) { f.printf("<newer_version>%s</newer_version>\n", newer_version.c_str()); } for (i=1; i<platforms.size(); i++) { f.printf("<alt_platform>%s</alt_platform>\n", platforms[i].name.c_str()); } if (gui_proxy_info.present) { gui_proxy_info.write(f); } if (strlen(main_host_venue)) { f.printf("<host_venue>%s</host_venue>\n", main_host_venue); } f.printf("</client_state>\n"); return 0; }