本文整理汇总了C++中reply_ack函数的典型用法代码示例。如果您正苦于以下问题:C++ reply_ack函数的具体用法?C++ reply_ack怎么用?C++ reply_ack使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了reply_ack函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: chk_job_request
void *req_modifyjob(
batch_request *preq) /* I */
{
job *pjob;
svrattrl *plist;
char log_buf[LOCAL_LOG_BUF_SIZE];
pjob = chk_job_request(preq->rq_ind.rq_modify.rq_objname, preq);
if (pjob == NULL)
{
return(NULL);
}
mutex_mgr job_mutex(pjob->ji_mutex, true);
plist = (svrattrl *)GET_NEXT(preq->rq_ind.rq_modify.rq_attr);
if (plist == NULL)
{
/* nothing to do */
reply_ack(preq);
/* SUCCESS */
return(NULL);
}
job_mutex.unlock();
/* If async modify, reply now; otherwise reply is handled later */
if (preq->rq_type == PBS_BATCH_AsyModifyJob)
{
/* reply_ack will free preq. We need to copy it before we call reply_ack */
batch_request *new_preq;
new_preq = duplicate_request(preq, -1);
if (new_preq == NULL)
{
sprintf(log_buf, "failed to duplicate batch request");
log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, __func__, log_buf);
return(NULL);
}
get_batch_request_id(new_preq);
reply_ack(preq);
new_preq->rq_noreply = TRUE; /* set for no more replies */
enqueue_threadpool_request((void *(*)(void *))modify_job_work, new_preq);
}
else
modify_job_work(preq);
return(NULL);
} /* END req_modifyjob() */
示例2: process_checkpoint_reply
void process_checkpoint_reply(
batch_request *preq)
{
job *pjob;
/* preq handled previously */
if (preq == NULL)
return;
preq->rq_conn = preq->rq_orgconn; /* restore client socket */
if ((pjob = svr_find_job(preq->rq_ind.rq_manager.rq_objname, FALSE)) == NULL)
{
log_event(PBSEVENT_DEBUG, PBS_EVENTCLASS_JOB,
preq->rq_ind.rq_manager.rq_objname,
msg_postmomnojob);
req_reject(PBSE_UNKJOBID, 0, preq, NULL, msg_postmomnojob);
}
else
{
mutex_mgr job_mutex = mutex_mgr(pjob->ji_mutex, true);
/* record that MOM has a checkpoint file */
account_record(PBS_ACCT_CHKPNT, pjob, "Checkpointed"); /* note in accounting file */
reply_ack(preq);
}
} /* END process_checkpoint_reply() */
示例3: req_releasejob
int req_releasejob(
batch_request *vp) /* I */
{
job *pjob;
int rc;
batch_request *preq = (batch_request *)vp;
pjob = chk_job_request(preq->rq_ind.rq_release.rq_objname, preq);
if (pjob == NULL)
{
return(PBSE_NONE);
}
mutex_mgr job_mutex(pjob->ji_mutex, true);
if ((rc = release_job(preq, pjob, NULL)) != 0)
{
req_reject(rc,0,preq,NULL,NULL);
}
else
{
reply_ack(preq);
}
return(PBSE_NONE);
} /* END req_releasejob() */
示例4: svr_find_job
void *single_delete_work(
void *vp)
{
int rc = -1;
batch_request *preq = (batch_request *)vp;
char *jobid = preq->rq_ind.rq_delete.rq_objname;
job *pjob;
char *Msg = preq->rq_extend;
pjob = svr_find_job(jobid, FALSE);
if (pjob == NULL)
{
req_reject(PBSE_JOBNOTFOUND, 0, preq, NULL, "job unexpectedly deleted");
}
else
{
/* mutex is freed below */
if ((rc = forced_jobpurge(pjob, preq)) == PBSE_NONE)
rc = execute_job_delete(pjob, Msg, preq);
if ((rc == PBSE_NONE) ||
(rc == PURGE_SUCCESS))
reply_ack(preq);
}
return(NULL);
} /* END single_delete_work() */
示例5: handle_single_delete
int handle_single_delete(
struct batch_request *preq,
struct batch_request *preq_tmp,
char *Msg)
{
char *jobid = preq->rq_ind.rq_delete.rq_objname;
job *pjob = svr_find_job(jobid, FALSE);
if (pjob == NULL)
{
log_event(PBSEVENT_DEBUG,PBS_EVENTCLASS_JOB,jobid,pbse_to_txt(PBSE_UNKJOBID));
req_reject(PBSE_UNKJOBID, 0, preq, NULL, "cannot locate job");
}
else
{
unlock_ji_mutex(pjob, __func__, NULL, 0);
/* send the asynchronous reply if needed */
if (preq_tmp != NULL)
{
reply_ack(preq_tmp);
preq->rq_noreply = TRUE; /* set for no more replies */
enqueue_threadpool_request(single_delete_work, preq);
}
else
single_delete_work(preq);
}
return(PBSE_NONE);
} /* END handle_single_delete() */
示例6: post_message_req
static void post_message_req(
struct work_task *pwt)
{
struct batch_request *preq;
char log_buf[LOCAL_LOG_BUF_SIZE];
svr_disconnect(pwt->wt_event); /* close connection to MOM */
preq = get_remove_batch_request(pwt->wt_parm1);
free(pwt->wt_mutex);
free(pwt);
/* preq has been hadnled previously */
if (preq == NULL)
return;
preq->rq_conn = preq->rq_orgconn; /* restore socket to client */
sprintf(log_buf, msg_messagejob, preq->rq_reply.brp_code);
log_event(PBSEVENT_JOB, PBS_EVENTCLASS_JOB, preq->rq_ind.rq_message.rq_jid, log_buf);
if (preq->rq_reply.brp_code)
req_reject(preq->rq_reply.brp_code, 0, preq, NULL, NULL);
else
reply_ack(preq);
} /* END post_message_req() */
示例7: req_releasejob
int req_releasejob(
void *vp) /* ptr to the decoded request */
{
job *pjob;
int rc;
struct batch_request *preq = (struct batch_request *)vp;
pjob = chk_job_request(preq->rq_ind.rq_release.rq_objname, preq);
if (pjob == NULL)
{
return(PBSE_NONE);
}
if ((rc = release_job(preq,pjob)) != 0)
{
req_reject(rc,0,preq,NULL,NULL);
}
else
{
reply_ack(preq);
}
unlock_ji_mutex(pjob, __func__, (char *)"1", LOGLEVEL);
return(PBSE_NONE);
} /* END req_releasejob() */
示例8: svr_find_job
void *single_delete_work(
void *vp)
{
int rc = -1;
batch_request *preq = (batch_request *)vp;
char *jobid = preq->rq_ind.rq_delete.rq_objname;
job *pjob;
char *Msg = preq->rq_extend;
// TRUE is the same for non-heterogeneous jobs as FALSE. For heterogeneous
// jobs simply delete one to trigger the other being deleted as well.
pjob = svr_find_job(jobid, TRUE);
if (pjob == NULL)
{
req_reject(PBSE_JOBNOTFOUND, 0, preq, NULL, "job unexpectedly deleted");
}
else
{
/* mutex is freed below */
if ((rc = forced_jobpurge(pjob, preq)) == PBSE_NONE)
rc = execute_job_delete(pjob, Msg, preq);
if ((rc == PBSE_NONE) ||
(rc == PURGE_SUCCESS))
reply_ack(preq);
}
return(NULL);
} /* END single_delete_work() */
示例9: post_modify_req
static void post_modify_req(
struct work_task *pwt)
{
struct batch_request *preq;
job *pjob;
svr_disconnect(pwt->wt_event); /* close connection to MOM */
preq = pwt->wt_parm1;
preq->rq_conn = preq->rq_orgconn; /* restore socket to client */
if ((preq->rq_reply.brp_code) && (preq->rq_reply.brp_code != PBSE_UNKJOBID))
{
sprintf(log_buffer, msg_mombadmodify, preq->rq_reply.brp_code);
log_event(
PBSEVENT_JOB,
PBS_EVENTCLASS_JOB,
preq->rq_ind.rq_modify.rq_objname,
log_buffer);
req_reject(preq->rq_reply.brp_code, 0, preq, NULL, NULL);
}
else
{
if (preq->rq_reply.brp_code == PBSE_UNKJOBID)
{
if ((pjob = find_job(preq->rq_ind.rq_modify.rq_objname)) == NULL)
{
req_reject(preq->rq_reply.brp_code, 0, preq, NULL, NULL);
return;
}
else
{
if (LOGLEVEL >= 0)
{
sprintf(log_buffer, "post_modify_req: PBSE_UNKJOBID for job %s in state %s-%s, dest = %s",
(pjob->ji_qs.ji_jobid != NULL) ? pjob->ji_qs.ji_jobid : "",
PJobState[pjob->ji_qs.ji_state],
PJobSubState[pjob->ji_qs.ji_substate],
pjob->ji_qs.ji_destin);
LOG_EVENT(
PBSEVENT_JOB,
PBS_EVENTCLASS_JOB,
pjob->ji_qs.ji_jobid,
log_buffer);
}
}
}
reply_ack(preq);
}
return;
} /* END post_modify_req() */
示例10: get_array
void *req_modifyarray(
batch_request *vp) /* I */
{
job_array *pa;
struct batch_request *preq = (struct batch_request *)vp;
pa = get_array(preq->rq_ind.rq_modify.rq_objname);
if (pa == NULL)
{
req_reject(PBSE_UNKARRAYID, 0, preq, NULL, "unable to find array");
return(NULL);
}
unlock_ai_mutex(pa, __func__, "4", LOGLEVEL);
/* If async modify, reply now; otherwise reply is handled later */
if (preq->rq_type == PBS_BATCH_AsyModifyJob)
{
preq->rq_noreply = TRUE; /* set for no more replies */
reply_ack(preq);
enqueue_threadpool_request(modify_array_work, preq);
}
else
modify_array_work(preq);
return(NULL);
} /* END req_modifyarray() */
示例11: process_checkpoint_reply
static void process_checkpoint_reply(
struct work_task *pwt)
{
job *pjob;
struct batch_request *preq;
svr_disconnect(pwt->wt_event); /* close connection to MOM */
preq = pwt->wt_parm1;
preq->rq_conn = preq->rq_orgconn; /* restore client socket */
if ((pjob = find_job(preq->rq_ind.rq_manager.rq_objname)) == (job *)0)
{
LOG_EVENT(PBSEVENT_DEBUG, PBS_EVENTCLASS_JOB,
preq->rq_ind.rq_manager.rq_objname,
msg_postmomnojob);
req_reject(PBSE_UNKJOBID, 0, preq, NULL, msg_postmomnojob);
}
else
{
/* record that MOM has a checkpoint file */
account_record(PBS_ACCT_CHKPNT, pjob, "Checkpointed"); /* note in accounting file */
reply_ack(preq);
}
}
示例12: handle_requeue_all
int handle_requeue_all(
batch_request *preq)
{
int rc;
job *pjob;
all_jobs_iterator *iter;
if ((preq->rq_perm & (ATR_DFLAG_MGWR)) == 0)
{
rc = PBSE_PERM;
req_reject(rc, 0, preq, NULL, "You must be a manager to requeue all jobs");
return(rc);
}
alljobs.lock();
iter = alljobs.get_iterator();
alljobs.unlock();
while ((pjob = next_job(&alljobs, iter)) != NULL)
{
mutex_mgr job_mutex(pjob->ji_mutex, true);
requeue_job_without_contacting_mom(*pjob);
}
delete iter;
reply_ack(preq);
return(PBSE_NONE);
} /* END handle_requeue_all() */
示例13: req_authenResvPort
void
req_authenResvPort(struct batch_request *preq)
{
pbs_net_t req_addr;
conn_t *cp;
uint authrequest_port = preq->rq_ind.rq_authen_resvport.rq_port;
cp = get_conn(preq->rq_conn);
if (!cp) {
req_reject(PBSE_SYSTEM, 0, preq);
return;
}
req_addr = cp->cn_addr;
/*
* find the socket whose client side is bound to the port named
* in the request
*/
for (cp = (conn_t *)GET_NEXT(svr_allconns); cp; cp = GET_NEXT(cp->cn_link)) {
if (authrequest_port == cp->cn_port && req_addr == cp->cn_addr) {
if ((cp->cn_authen & (PBS_NET_CONN_AUTHENTICATED | PBS_NET_CONN_FROM_PRIVIL)) == 0) {
(void) strcpy(cp->cn_username, preq->rq_user);
(void)strcpy(cp->cn_hostname, preq->rq_host);
/* time stamp just for the record */
cp->cn_timestamp = time_now;
cp->cn_authen |= PBS_NET_CONN_AUTHENTICATED;
}
reply_ack(preq);
return;
}
}
req_reject(PBSE_BADCRED, 0, preq);
}
示例14: shutdown_ack
void
shutdown_ack()
{
if (pshutdown_request) {
reply_ack(pshutdown_request);
pshutdown_request = 0;
}
}
示例15: svr_stagein
static int svr_stagein(
job *pjob, /* I */
struct batch_request *preq, /* I */
int state, /* I */
int substate) /* I */
{
struct batch_request *momreq = 0;
int rc;
momreq = cpy_stage(momreq, pjob, JOB_ATR_stagein, STAGE_DIR_IN);
if (momreq == NULL)
{
/* no files to stage, go directly to sending job to mom */
return(svr_strtjob2(pjob, preq));
}
/* have files to stage in */
/* save job id for post_stagein */
momreq->rq_extra = malloc(PBS_MAXSVRJOBID + 1);
if (momreq->rq_extra == 0)
{
return(PBSE_SYSTEM);
}
strcpy(momreq->rq_extra, pjob->ji_qs.ji_jobid);
rc = relay_to_mom(
pjob->ji_qs.ji_un.ji_exect.ji_momaddr,
momreq,
post_stagein);
if (rc == 0)
{
svr_setjobstate(pjob, state, substate);
/*
* stage-in started ok - reply to client as copy may
* take too long to wait.
*/
if (preq != NULL)
reply_ack(preq);
}
else
{
free(momreq->rq_extra);
}
return(rc);
} /* END svr_stagein() */