static bool test_getjob(acl::disque& cmd, int max, int& i, int count) { if (i >= max) return true; std::vector<acl::string> queues; size_t timeout = 10; queues.push_back(__queue); cmd.clear(); const std::vector<acl::disque_job*>* jobs = cmd.getjob(queues, timeout, count); if (jobs == NULL) { printf("getjob queue: %s error: %s\r\n", __queue.c_str(), cmd.result_error()); return false; } std::vector<acl::string> job_ids; std::vector<acl::disque_job*>::const_iterator cit1; for (cit1 = jobs->begin(); cit1 != jobs->end(); ++cit1) { const char* jobid = (*cit1)->get_id(); if (*jobid) job_ids.push_back(jobid); } if (!job_ids.empty() && !test_ackjob(cmd, job_ids, i)) return false; i += jobs->size(); if (i >= 2 * (int) count) return true; printf("%s -> addr: %s, tid: %lu, count: %d, %d\r\n", __FUNCTION__, cmd.get_client_addr(), acl::thread::thread_self(), (int) count, (int) jobs->size()); std::vector<acl::disque_job*>::const_iterator cit2; for (cit2 = jobs->begin(); cit2 != jobs->end(); ++cit2) { printf("\tid: %s\r\n", (*cit2)->get_id()); printf("\tqueue: %s\r\n", (*cit2)->get_queue()); printf("\tjob: %s\r\n", (*cit2)->get_body().c_str()); } return true; }
static bool test_getjob(acl::disque& cmd, int i) { std::vector<acl::string> queues; size_t timeout = 10, count = 10; queues.push_back(__queue); cmd.clear(); const std::vector<acl::disque_job*>* jobs = cmd.getjob(queues, timeout, count); if (jobs == NULL) { printf("getjob queue: %s error: %s\r\n", __queue.c_str(), cmd.result_error()); return false; } std::vector<acl::string> job_ids; std::vector<acl::disque_job*>::const_iterator cit1; for (cit1 = jobs->begin(); cit1 != jobs->end(); ++cit1) { const char* jobid = (*cit1)->get_id(); if (*jobid) job_ids.push_back(jobid); } if (!job_ids.empty() && !test_ackjob(cmd, job_ids, i)) return false; if (i >= 10) return true; printf(">>getjob ok\r\n"); std::vector<acl::disque_job*>::const_iterator cit2; for (cit2 = jobs->begin(); cit2 != jobs->end(); ++cit2) { printf("\tid: %s\r\n", (*cit2)->get_id()); printf("\tqueue: %s\r\n", (*cit2)->get_queue()); printf("\tjob: %s\r\n", (*cit2)->get_body().c_str()); } return true; }