bool do_pass() { int retval; DB_TRANSITIONER_ITEM_SET transitioner; std::vector<TRANSITIONER_ITEM> items; bool did_something = false; if (!one_pass) check_stop_daemons(); // loop over entries that are due to be checked // while (1) { if (wu_id) { // kludge to tell enumerate to return a given WU mod_n = 1; mod_i = wu_id; } retval = transitioner.enumerate( (int)time(0), SELECT_LIMIT, mod_n, mod_i, items ); if (retval) { if (retval != ERR_DB_NOT_FOUND) { log_messages.printf(MSG_CRITICAL, "WU enum error: %s; exiting\n", boincerror(retval) ); exit(1); } break; } did_something = true; TRANSITIONER_ITEM& wu_item = items[0]; retval = handle_wu(transitioner, items); if (retval) { log_messages.printf(MSG_CRITICAL, "[WU#%lu %s] handle_wu: %s; quitting\n", wu_item.id, wu_item.name, boincerror(retval) ); // probably better to exit here. // Whatever cause this WU to fail (and it could be temporary) // might cause ALL WUs to fail // exit(1); } if (!one_pass) check_stop_daemons(); if (wu_id) break; } return did_something; }
bool do_pass() { int retval; DB_TRANSITIONER_ITEM_SET transitioner; std::vector<TRANSITIONER_ITEM> items; bool did_something = false; if (!one_pass) check_stop_daemons(); // loop over entries that are due to be checked // while (1) { retval = transitioner.enumerate( (int)time(0), SELECT_LIMIT, mod_n, mod_i, items ); if (retval) { if (retval != ERR_DB_NOT_FOUND) { log_messages.printf(MSG_CRITICAL, "WU enum error: %s; exiting\n", boincerror(retval) ); exit(1); } break; } did_something = true; TRANSITIONER_ITEM& wu_item = items[0]; retval = handle_wu(transitioner, items); if (retval) { log_messages.printf(MSG_CRITICAL, "[WU#%d %s] handle_wu: %s; quitting\n", wu_item.id, wu_item.name, boincerror(retval) ); exit(1); } if (!one_pass) check_stop_daemons(); } return did_something; }