diff --git a/client/app.h b/client/app.h index 2220e4bece..57cbf992e6 100644 --- a/client/app.h +++ b/client/app.h @@ -227,6 +227,7 @@ struct ACTIVE_TASK { // This is compared with project-specified limits // to decide whether to abort job; no other use. int get_free_slot(RESULT*); + int start(bool test=false); // start a process // Termination stuff. // Terminology: @@ -338,6 +339,7 @@ public: void get_msgs(); bool check_app_exited(); bool check_rsc_limits_exceeded(); + bool check_quit_timeout_exceeded(); bool is_slot_in_use(int); bool is_slot_dir_in_use(char*); void send_heartbeats(); diff --git a/client/client_state.h b/client/client_state.h index 3adac058f8..11bdde9e3b 100644 --- a/client/client_state.h +++ b/client/client_state.h @@ -303,6 +303,7 @@ struct CLIENT_STATE { double total_resource_share(); double potentially_runnable_resource_share(); double nearly_runnable_resource_share(); + double fetchable_resource_share(); double rec_interval_start; double total_cpu_time_this_rec_interval; bool must_enforce_cpu_schedule; @@ -376,7 +377,9 @@ struct CLIENT_STATE { int latest_version(APP*, char*); int app_finished(ACTIVE_TASK&); + bool start_apps(); bool handle_finished_apps(); + void check_for_finished_jobs(); void check_overdue(); ACTIVE_TASK* get_task(RESULT*); @@ -422,6 +425,7 @@ struct CLIENT_STATE { int get_disk_usages(); void get_disk_shares(); double allowed_disk_usage(double boinc_total); + int allowed_project_disk_usage(double&); void show_suspend_tasks_message(int reason); int resume_tasks(int reason=0); void read_global_prefs( @@ -434,6 +438,7 @@ struct CLIENT_STATE { double max_available_ram(); int check_suspend_processing(); void check_suspend_network(); + void install_global_prefs(); PROJECT* global_prefs_source_project(); void show_global_prefs_source(bool); @@ -507,10 +512,13 @@ struct CLIENT_STATE { void free_mem(); // --------------- work_fetch.cpp: + int proj_min_results(PROJECT*, double); void check_project_timeout(); double overall_cpu_frac(); double overall_cpu_and_network_frac(); double overall_gpu_frac(); + double time_until_work_done(PROJECT*, int, double); + bool compute_work_requests(); void scale_duration_correction_factors(double); void generate_new_host_cpid(); void compute_nuploading_results(); diff --git a/client/cs_notice.h b/client/cs_notice.h index 7568f4e52a..97b1c5ed9a 100644 --- a/client/cs_notice.h +++ b/client/cs_notice.h @@ -106,6 +106,9 @@ struct RSS_FEED { bool found; // temp used in garbage collection + int fetch_start(); + int fetch_complete(); + void write(MIOFILE&); int parse_desc(XML_PARSER&); int parse_items(XML_PARSER&, int&); diff --git a/client/http_curl.h b/client/http_curl.h index de4227265f..03e9c6e232 100644 --- a/client/http_curl.h +++ b/client/http_curl.h @@ -144,6 +144,7 @@ public: void reset(); void init(PROJECT*); + int get_ip_addr(int &ip_addr); void close_socket(); void close_files(); void update_speed(); diff --git a/client/project.h b/client/project.h index 70bfc4a412..a0022266f6 100644 --- a/client/project.h +++ b/client/project.h @@ -243,6 +243,8 @@ struct PROJECT : PROJ_AM { // runnable or contactable or downloading bool nearly_runnable(); // runnable or downloading + bool overworked(); + // the project has used too much CPU time recently bool some_download_stalled(); // a download is backed off bool some_result_suspended(); @@ -340,6 +342,7 @@ struct PROJECT : PROJ_AM { // statistic of the last x days std::vector statistics; + int parse_statistics(MIOFILE&); int parse_statistics(FILE*); int write_statistics(MIOFILE&); int write_statistics_file(); @@ -384,6 +387,7 @@ struct PROJECT : PROJ_AM { PROJECT_RESULTS project_results; void print_results(FILE*, SIM_RESULTS&); void backoff(); + void update_dcf_stats(RESULT*); #endif };