本文整理汇总了C++中DB_HOST::update_diff_validator方法的典型用法代码示例。如果您正苦于以下问题:C++ DB_HOST::update_diff_validator方法的具体用法?C++ DB_HOST::update_diff_validator怎么用?C++ DB_HOST::update_diff_validator使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DB_HOST
的用法示例。
在下文中一共展示了DB_HOST::update_diff_validator方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handle_trickle
int handle_trickle(MSG_FROM_HOST& msg) {
double runtime = 0;
MIOFILE mf;
mf.init_buf_read(msg.xml);
XML_PARSER xp(&mf);
while (!xp.get_tag()) {
if (xp.parse_double("runtime", runtime)) break;
log_messages.printf(MSG_NORMAL, "unexpected tag: %s\n", xp.parsed_tag);
}
if (runtime <= 0) {
log_messages.printf(MSG_NORMAL,
"unexpected nonpositive runtime: %f\n", runtime
);
return ERR_XML_PARSE;
}
DB_HOST host;
int retval = host.lookup_id(msg.hostid);
if (retval) return retval;
HOST old_host = host;
double flops_sec = host.p_fpops;
// sanity checks - customize as needed
//
if (runtime > max_runtime) {
log_messages.printf(MSG_NORMAL,
"Reported runtime exceeds bound: %f>%f\n", runtime, max_runtime
);
runtime = max_runtime;
}
if (flops_sec < 0) {
log_messages.printf(MSG_NORMAL,
"host CPU speed %f < 0. Using %f instead\n",
flops_sec, flops_50_percentile
);
flops_sec = flops_50_percentile;
}
if (flops_sec > flops_95_percentile) {
log_messages.printf(MSG_NORMAL,
"host CPU speed %f exceeds %f. Using %f instead\n",
flops_sec, flops_95_percentile, flops_95_percentile
);
flops_sec = flops_95_percentile;
}
double credit = cpu_time_to_credit(runtime, flops_sec);
grant_credit(host, dtime()-86400, credit);
log_messages.printf(MSG_DEBUG,
"granting %f credit to host %lu\n", credit, host.id
);
// update the host's credit fields
//
retval = host.update_diff_validator(old_host);
return 0;
}
示例2: handle_wu
//.........这里部分代码省略.........
grant_credit(
host, result.sent_time, result.cpu_time,
result.granted_credit
);
log_messages.printf(MSG_NORMAL,
"[RESULT#%d %s] Valid; granted %f credit [HOST#%d]\n",
result.id, result.name, result.granted_credit,
result.hostid
);
break;
case VALIDATE_STATE_INVALID:
update_result = true;
update_host = true;
log_messages.printf(MSG_NORMAL,
"[RESULT#%d %s] Invalid [HOST#%d]\n",
result.id, result.name, result.hostid
);
is_invalid(host_app_versions[i]);
break;
case VALIDATE_STATE_INIT:
log_messages.printf(MSG_NORMAL,
"[RESULT#%d %s] Inconclusive [HOST#%d]\n",
result.id, result.name, result.hostid
);
result.validate_state = VALIDATE_STATE_INCONCLUSIVE;
update_result = true;
break;
}
if (hav.host_id) {
retval = hav.update_validator(hav_orig);
}
if (update_host) {
retval = host.update_diff_validator(host_initial);
}
if (update_result) {
retval = validator.update_result(result);
if (retval) {
log_messages.printf(MSG_CRITICAL,
"[RESULT#%d %s] result.update() failed: %d\n",
result.id, result.name, retval
);
}
}
}
if (canonicalid) {
// if we found a canonical result,
// trigger the assimilator, but do NOT trigger
// the transitioner - doing so creates a race condition
//
transition_time = NEVER;
log_messages.printf(MSG_DEBUG,
"[WU#%d %s] Found a canonical result: id=%d\n",
wu.id, wu.name, canonicalid
);
wu.canonical_resultid = canonicalid;
wu.canonical_credit = credit;
wu.assimilate_state = ASSIMILATE_READY;
// don't need to send any more results
//
for (i=0; i<items.size(); i++) {
RESULT& result = items[i].res;
if (result.server_state != RESULT_SERVER_STATE_UNSENT) {
示例3: handle_wu
//.........这里部分代码省略.........
grant_credit(host, result.sent_time, result.granted_credit);
if (config.credit_by_app) {
grant_credit_by_app(result, result.granted_credit);
}
}
break;
case VALIDATE_STATE_INVALID:
update_result = true;
update_hav = true;
log_messages.printf(MSG_NORMAL,
"[RESULT#%lu %s] pair_check() didn't match: setting result to invalid\n",
result.id, result.name
);
is_invalid(havv[0]);
}
if (hav.host_id && update_hav) {
if (dry_run) {
log_messages.printf(MSG_NORMAL, "DB not updated (dry run)\n");
} else {
log_messages.printf(MSG_NORMAL,
"[HOST#%lu AV#%lu] [outlier=%d] Updating HAV in DB. pfc.n=%f->%f\n",
havv[0].host_id, havv[0].app_version_id,
result.runtime_outlier, hav_orig.pfc.n, havv[0].pfc.n
);
retval=havv[0].update_validator(hav_orig);
if (retval) {
log_messages.printf(MSG_CRITICAL,
"[HOST#%lu AV%lu] hav.update_validator() failed: %s\n",
hav.host_id, hav.app_version_id, boincerror(retval)
);
}
}
}
host.update_diff_validator(host_initial);
if (update_result) {
log_messages.printf(MSG_NORMAL,
"[RESULT#%lu %s] granted_credit %f\n",
result.id, result.name, result.granted_credit
);
if (dry_run) {
log_messages.printf(MSG_NORMAL, "DB not updated (dry run)\n");
} else {
retval = validator.update_result(result);
if (retval) {
log_messages.printf(MSG_CRITICAL,
"[RESULT#%lu %s] Can't update result: %s\n",
result.id, result.name, boincerror(retval)
);
}
}
}
}
} else {
// Here if WU doesn't have a canonical result yet.
// Try to get one
vector<RESULT> viable_results;
vector<DB_HOST_APP_VERSION> host_app_versions, host_app_versions_orig;
log_messages.printf(MSG_NORMAL,
"[WU#%lu %s] handle_wu(): No canonical result yet\n",
wu.id, wu.name
);
++log_messages;
// make a vector of the "viable" (i.e. possibly canonical) results,