void req_stat_que(struct batch_request *preq) { char *name; pbs_queue *pque; struct batch_reply *preply; int rc = 0; int type = 0; /* * first, validate the name of the requested object, either * a queue, or null for all queues */ name = preq->rq_ind.rq_status.rq_id; if ((*name == '\0') || (*name =='@')) type = 1; else { pque = find_queuebyname(name); #ifdef NAS /* localmod 075 */ if (pque == NULL) pque = find_resvqueuebyname(name); #endif /* localmod 075 */ if (pque == NULL) { req_reject(PBSE_UNKQUE, 0, preq); return; } } preply = &preq->rq_reply; preply->brp_choice = BATCH_REPLY_CHOICE_Status; CLEAR_HEAD(preply->brp_un.brp_status); if (type == 0) { /* get status of the one named queue */ rc = status_que(pque, preq, &preply->brp_un.brp_status); } else { /* get status of queues */ pque = (pbs_queue *)GET_NEXT(svr_queues); while (pque) { rc = status_que(pque, preq, &preply->brp_un.brp_status); if (rc != 0) { if (rc == PBSE_PERM) rc = 0; else break; } pque = (pbs_queue *)GET_NEXT(pque->qu_link); } } if (rc) { (void)reply_free(preply); req_reject(rc, bad, preq); } else { (void)reply_send(preq); } }
int req_stat_que( batch_request *preq) { char *name; pbs_queue *pque = NULL; struct batch_reply *preply; int rc = 0; int type = 0; char log_buf[LOCAL_LOG_BUF_SIZE+1]; /* * first, validate the name of the requested object, either * a queue, or null for all queues */ name = preq->rq_ind.rq_status.rq_id; if ((*name == '\0') || (*name == '@')) { type = 1; } else { pque = find_queuebyname(name); if (pque == NULL) { rc = PBSE_UNKQUE; snprintf(log_buf, LOCAL_LOG_BUF_SIZE, "cannot locate queue %s", name); req_reject(rc, 0, preq, NULL, log_buf); return rc; } } preply = &preq->rq_reply; preply->brp_choice = BATCH_REPLY_CHOICE_Status; CLEAR_HEAD(preply->brp_un.brp_status); if (type == 0) { /* get status of the named queue */ mutex_mgr pque_mutex = mutex_mgr(pque->qu_mutex, true); rc = status_que(pque, preq, &preply->brp_un.brp_status); /* pque_qu_mutex will be unlocked in the destructor when we leave this scope */ } else { /* pque == NULL before next_queue */ svr_queues.lock(); all_queues_iterator *iter = svr_queues.get_iterator(); svr_queues.unlock(); /* get status of all queues */ while ((pque = next_queue(&svr_queues,iter)) != NULL) { mutex_mgr pque_mutex = mutex_mgr(pque->qu_mutex, true); rc = status_que(pque, preq, &preply->brp_un.brp_status); if (rc != 0) { if (rc != PBSE_PERM) { break; } rc = 0; } } delete iter; } if (rc != PBSE_NONE) { reply_free(preply); req_reject(PBSE_NOATTR, rc, preq, NULL, "status_queue failed"); } else { reply_send_svr(preq); } return rc; } /* END req_stat_que() */
int req_stat_que( struct batch_request *preq) { char *name; pbs_queue *pque = NULL; struct batch_reply *preply; int rc = 0; int type = 0; char log_buf[LOCAL_LOG_BUF_SIZE+1]; /* * first, validate the name of the requested object, either * a queue, or null for all queues */ name = preq->rq_ind.rq_status.rq_id; if ((*name == '\0') || (*name == '@')) { type = 1; } else { pque = find_queuebyname(name); if (pque == NULL) { rc = PBSE_UNKQUE; snprintf(log_buf, LOCAL_LOG_BUF_SIZE, "can not locate queue %s", name); req_reject(rc, 0, preq, NULL, log_buf); return rc; } } preply = &preq->rq_reply; preply->brp_choice = BATCH_REPLY_CHOICE_Status; CLEAR_HEAD(preply->brp_un.brp_status); if (type == 0) { /* get status of the named queue */ rc = status_que(pque, preq, &preply->brp_un.brp_status); unlock_queue(pque, "req_stat_que", "type == 0", LOGLEVEL); } else { /* pque == NULL before next_queue */ int iter = -1; /* get status of all queues */ while ((pque = next_queue(&svr_queues,&iter)) != NULL) { rc = status_que(pque, preq, &preply->brp_un.brp_status); if (rc != 0) { if (rc != PBSE_PERM) { unlock_queue(pque, "req_stat_que", "break", LOGLEVEL); break; } rc = 0; } unlock_queue(pque, "req_stat_que", "end while", LOGLEVEL); } } if (rc != PBSE_NONE) { reply_free(preply); req_reject(PBSE_NOATTR, rc, preq, NULL, "status_queue failed"); } else { reply_send_svr(preq); } return rc; } /* END req_stat_que() */
void req_stat_que( struct batch_request *preq) /* ptr to the decoded request */ { char *name; pbs_queue *pque = NULL; struct batch_reply *preply; int rc = 0; int type = 0; /* * first, validate the name of the requested object, either * a queue, or null for all queues */ name = preq->rq_ind.rq_status.rq_id; if ((*name == '\0') || (*name == '@')) { type = 1; } else { pque = find_queuebyname(name); if (pque == NULL) { req_reject(PBSE_UNKQUE, 0, preq, NULL, "cannot locate queue"); return; } } preply = &preq->rq_reply; preply->brp_choice = BATCH_REPLY_CHOICE_Status; CLEAR_HEAD(preply->brp_un.brp_status); if (type == 0) { /* get status of the named queue */ rc = status_que(pque, preq, &preply->brp_un.brp_status); } else { /* get status of all queues */ pque = (pbs_queue *)GET_NEXT(svr_queues); while (pque != NULL) { rc = status_que(pque, preq, &preply->brp_un.brp_status); if (rc != 0) { if (rc != PBSE_PERM) break; rc = 0; } pque = (pbs_queue *)GET_NEXT(pque->qu_link); } } if (rc != 0) { reply_free(preply); req_reject(rc, bad, preq, NULL, "status_queue failed"); } else { reply_send(preq); } return; } /* END req_stat_que() */