| | 1 | = Startup and status data = |
| | 2 | |
| | 3 | == Getting startup data == |
| | 4 | |
| | 5 | The following functions return startup data: |
| | 6 | |
| | 7 | {{{ |
| | 8 | #!c++ |
| | 9 | int boinc_get_init_data_p(APP_INIT_DATA*); |
| | 10 | int boinc_get_init_data(APP_INIT_DATA&); |
| | 11 | |
| | 12 | struct APP_INIT_DATA { |
| | 13 | int major_version; |
| | 14 | int minor_version; |
| | 15 | int release; |
| | 16 | int app_version; |
| | 17 | char app_name[256]; |
| | 18 | char symstore[256]; |
| | 19 | char acct_mgr_url[256]; |
| | 20 | char* project_preferences; |
| | 21 | int hostid; |
| | 22 | char user_name[256]; |
| | 23 | char team_name[256]; |
| | 24 | char project_dir[256]; |
| | 25 | char boinc_dir[256]; |
| | 26 | char wu_name[256]; |
| | 27 | char authenticator[256]; |
| | 28 | int slot; |
| | 29 | double user_total_credit; |
| | 30 | double user_expavg_credit; |
| | 31 | double host_total_credit; |
| | 32 | double host_expavg_credit; |
| | 33 | double resource_share_fraction; |
| | 34 | HOST_INFO host_info; |
| | 35 | PROXY_INFO proxy_info; // in case app wants to use network |
| | 36 | GLOBAL_PREFS global_prefs; |
| | 37 | double starting_elapsed_time; |
| | 38 | |
| | 39 | // info about the WU |
| | 40 | double rsc_fpops_est; |
| | 41 | double rsc_fpops_bound; |
| | 42 | double rsc_memory_bound; |
| | 43 | double rsc_disk_bound; |
| | 44 | |
| | 45 | // the following are used for compound apps, |
| | 46 | // where each stage of the computation is a fixed |
| | 47 | // fraction of the total. |
| | 48 | double fraction_done_start; |
| | 49 | double fraction_done_end; |
| | 50 | }; |
| | 51 | }}} |
| | 52 | |
| | 53 | to get the following information: |
| | 54 | |
| | 55 | ||'''core version'''||The version number of the core client|| |
| | 56 | ||'''app_name'''||The application name (from the server's DB)|| |
| | 57 | ||'''project_preferences'''||An XML string containing the user's project-specific preferences.|| |
| | 58 | ||'''user_name'''||The user's 'screen name' on this project.|| |
| | 59 | ||'''team_name'''||The user's team name, if any.|| |
| | 60 | ||'''project_dir'''||Absolute path of project directory|| |
| | 61 | ||'''boinc_dir'''||Absolute path of BOINC root directory|| |
| | 62 | ||'''wu_name'''||Name of workunit being processed|| |
| | 63 | ||'''authenticator'''||User's authenticator for this project|| |
| | 64 | ||'''slot'''||The number of the app's 'slot'|| |
| | 65 | ||'''user_total_credit'''||User's total work for this project.|| |
| | 66 | ||'''user_expavg_credit'''||User's recent average work per day.|| |
| | 67 | ||'''team_total_credit'''||Team's total work for this project.|| |
| | 68 | ||'''team_expavg_credit'''||Team's recent average work per day.|| |
| | 69 | ||'''host_info'''||A structure describing the host hardware and OS|| |
| | 70 | ||'''starting_elapsed_time'''||Elapsed time, counting previous episodes (provided only by 6.10 and later clients)|| |
| | 71 | |
| | 72 | == Getting runtime system status == |
| | 73 | |
| | 74 | The status of the runtime system is represented by the following structure: |
| | 75 | {{{ |
| | 76 | typedef struct BOINC_STATUS { |
| | 77 | int no_heartbeat; |
| | 78 | int suspended; |
| | 79 | int quit_request; |
| | 80 | int reread_init_data_file; |
| | 81 | int abort_request; |
| | 82 | double working_set_size; |
| | 83 | double max_working_set_size; |
| | 84 | int network_suspended; |
| | 85 | } BOINC_STATUS; |
| | 86 | }}} |
| | 87 | |
| | 88 | '''no_heartbeat''':: no heartbeat from client; clean up and exit(0). |
| | 89 | '''suspended''':: the client has requested that we suspend ourself. |
| | 90 | '''quit_request''':: the client has requested that we exit (will restart). |
| | 91 | '''reread_init_data_file''': project preferences have changed; reread them if needed. |
| | 92 | '''abort_request''': the client has request that we abort (no restart). |
| | 93 | '''working_set_size''':: our current working-set size |
| | 94 | '''max_working_set_size''':: the amount of available RAM |
| | 95 | '''network_suspended''':: set of network activity is not currently allowed |
| | 96 | |
| | 97 | You can get the current status using |
| | 98 | |
| | 99 | {{{ |
| | 100 | void boinc_get_status(BOINC_STATUS*); |
| | 101 | }}} |