- client/scheduler:

If the file "client_opaque.txt" exists on the client,
    include its contents in scheduler request messages.
    On the scheduler, parse this into SCHEDULER_REQUEST::client_opaque,
    where it can be used by the customizable scheduler functions.


svn path=/trunk/boinc/; revision=24586
This commit is contained in:
David Anderson 2011-11-14 06:27:36 +00:00
parent 40dbed0296
commit 2ac9fe8566
7 changed files with 91 additions and 37 deletions

View File

@ -8063,16 +8063,16 @@ David 3 Nov 2011
wrapper.cpp
David 3 Nov 2011
- client: show GPU exclusions at startup
(need to do this after reading the state file,
since GPU exclusions refer to projects).
- client: fix bug that added garbage <coproc> element
to <app_version> in state file when using GPU exclusions
- client: show GPU exclusions at startup
(need to do this after reading the state file,
since GPU exclusions refer to projects).
- client: fix bug that added garbage <coproc> element
to <app_version> in state file when using GPU exclusions
client/
client_types.cpp
client_state.cpp
log_flags.cpp
client/
client_types.cpp
client_state.cpp
log_flags.cpp
David 4 Nov 2011
- client: fix work fetch bug.
@ -8170,17 +8170,17 @@ David 5 Nov 2011
cs_trickle.cpp
David 6 Nov 2011
- client: actually do the checking described above
- client: actually do the checking described above
client/
cs_trickle.cpp
client/
cs_trickle.cpp
David 6 Nov 2011
- client: don't crash if a project sends app_version.flops = 0.
- client: don't crash if a project sends app_version.flops = 0.
client/
client_types.cpp
rr_sim.cpp
client/
client_types.cpp
rr_sim.cpp
Charlie 7 Nov 2011
- Mgr: Bug fix.
@ -8189,16 +8189,16 @@ Charlie 7 Nov 2011
BOINCGUIApp.cpp
David 7 Nov 2011
- manager: apparently WxWidget's combo box has problems (bugs)
if multiple items have the same string.
So, in simple view task combo box:
- show % done (unique in most cases)
- remove version number
- instead of showing plan class, show "NVIDIA GPU" or "ATI GPU"
TODO: update the fraction done
- manager: apparently WxWidget's combo box has problems (bugs)
if multiple items have the same string.
So, in simple view task combo box:
- show % done (unique in most cases)
- remove version number
- instead of showing plan class, show "NVIDIA GPU" or "ATI GPU"
TODO: update the fraction done
clientgui/
sg_TaskPanel.cpp
clientgui/
sg_TaskPanel.cpp
David 7 Nov 2011
- client: condition RR sim negative FLOPs message on rr_simulation.
@ -8226,19 +8226,19 @@ Rom 7 Nov 2011
workunit_waiting_image.png
David 7 Nov 2011
- client: on transient upload failure, don't do start_xfer()
within PERS_FILE_XFER::transient_failure();
we're about to delete and free the FILE_XFER.
The transfer will be restarted in the next poll.
- client: on transient upload failure, don't do start_xfer()
within PERS_FILE_XFER::transient_failure();
we're about to delete and free the FILE_XFER.
The transfer will be restarted in the next poll.
client/
pers_file_xfer.cpp
client/
pers_file_xfer.cpp
Charlie 8 Nov 2011
- Mgr: Fix Simple View layout to fit 3 decimal places for % done.
clientgui/
sg_TaskPanel.cpp
clientgui/
sg_TaskPanel.cpp
Charlie 8 Nov 2011
- Mac installer: fixes for OS 10.4 compatibility.
@ -8277,8 +8277,8 @@ Charlie 9 Nov 2011
Don't append % done to Task Selection control entries, as that
varies over time, causing significant complications.
clientgui/
sg_TaskPanel.cpp
clientgui/
sg_TaskPanel.cpp
Rom 9 Nov 2011
- WINSCR: Add a reference to SCRAPPERR_BOINCNOGRAPHICSAPPSEXECUTING
@ -8382,8 +8382,8 @@ Charlie 11 Nov 2011
shortcut in checking for existing entries.
- Mgr: If a slide show has only one slide, load it only once.
clientgui/
sg_TaskPanel.cpp
clientgui/
sg_TaskPanel.cpp
David 11 Nov 2011
- client: check return value of FILE_REF when parse project file.
@ -8420,3 +8420,16 @@ Charlie 11 Nov 2011
mac_installer/
PostInstall.cpp
David 13 Nov 2011
- client/scheduler:
If the file "client_opaque.txt" exists on the client,
include its contents in scheduler request messages.
On the scheduler, parse this into SCHEDULER_REQUEST::client_opaque,
where it can be used by the customizable scheduler functions.
sched/
sched_types.cpp,h
client/
file_names.h
cs_scheduler.cpp

View File

@ -362,6 +362,12 @@ int CLIENT_STATE::make_scheduler_request(PROJECT* p) {
}
fprintf(f, "</in_progress_results>\n");
}
FILE* cof = boinc_fopen(CLIENT_OPAQUE_FILENAME, "r");
if (cof) {
fprintf(f, "<client_opaque>\n<![CDATA[\n");
copy_stream(cof, f);
fprintf(f, "\n]]>\n</client_opaque>\n");
}
fprintf(f, "</scheduler_request>\n");

View File

@ -62,6 +62,7 @@ extern void send_log_after(const char* filename, double t, MIOFILE& mf);
#define CA_BUNDLE_FILENAME "ca-bundle.crt"
#define CERTIFICATE_DIRECTORY "certificates"
#define CLIENT_AUTH_FILENAME "client_auth.xml"
#define CLIENT_OPAQUE_FILENAME "client_opaque.txt"
#define CONFIG_FILE "cc_config.xml"
#define CPU_BENCHMARKS_FILE_NAME "cpu_benchmarks"
#define CREATE_ACCOUNT_FILENAME "create_account.xml"

View File

@ -25,6 +25,9 @@
require_once("../inc/util.inc");
require_once("../inc/sim_util.inc");
ini_set ("memory_limit", "1G");
set_time_limit(0);
function get_comments($dir) {
$d = "$dir/comments";
if (!is_dir($d)) return null;

View File

@ -412,6 +412,7 @@ const char* SCHEDULER_REQUEST::parse(XML_PARSER& xp) {
if (xp.parse_bool("client_cap_plan_class", client_cap_plan_class)) continue;
if (xp.parse_int("sandbox", sandbox)) continue;
if (xp.parse_int("allow_multiple_clients", allow_multiple_clients)) continue;
if (xp.parse_string("client_opaque", client_opaque)) continue;
if (xp.match_tag("active_task_set")) continue;
if (xp.match_tag("app")) continue;

View File

@ -328,6 +328,7 @@ struct SCHEDULER_REQUEST {
// Don't modify user prefs or CPID
int last_rpc_dayofyear;
int current_rpc_dayofyear;
std::string client_opaque;
SCHEDULER_REQUEST(){};
~SCHEDULER_REQUEST(){};

View File

@ -67,6 +67,8 @@ struct REPORT_STATS : public EVENT {
// a packet is associated with at most one host
//
struct PACKET {
DFILE* dfile;
META_PACKET* meta_packet;
enum {DOWNLOADING, PRESENT, UPLOADING} state;
HOST* host;
bool present; // present on server
@ -74,11 +76,38 @@ struct PACKET {
// transfer has finished
//
}
void assign() {
set<HOST*>::iterator i = dfile.unused_hosts.front();
HOST* h = *i;
dfile.unused_hosts.erase(i);
double t = now + 1/h->bw_down;
}
// This packet has been lost.
// If it's present on server, assign it to a host.
// Otherwise reassemble the meta-packet
//
void lost() {
if (present_on_server) {
assign();
} else {
meta_packet->reassemble();
}
}
};
struct META_PACKET {
vector<PACKET*> packets;
int npackets_present;
// we need to reassemble this meta-packet on the server
//
void reassemble() {
}
void reassembly_complete() {
}
};
struct DFILE : EVENT {