예제 #1
0
파일: dec_JobFile.c 프로젝트: CESNET/torque
int decode_DIS_JobFile(

  int                   sock,
  struct batch_request *preq)

  {
  int   rc;
  size_t amt;

  preq->rq_ind.rq_jobfile.rq_data = 0;

  preq->rq_ind.rq_jobfile.rq_sequence = disrui(sock, &rc);

  if (rc)
    {
    return(rc);
    }

  preq->rq_ind.rq_jobfile.rq_type = disrui(sock, &rc);

  if (rc)
    {
    return(rc);
    }

  preq->rq_ind.rq_jobfile.rq_size = disrui(sock, &rc);

  if (rc)
    {
    return(rc);
    }

  if ((rc = disrfst(sock, PBS_MAXSVRJOBID + 1, preq->rq_ind.rq_jobfile.rq_jobid)) != 0)
    {
    return(rc);
    }

  preq->rq_ind.rq_jobfile.rq_data = disrcs(sock, &amt, &rc);

  if (((long)amt != preq->rq_ind.rq_jobfile.rq_size) && (rc == 0))
    rc = DIS_EOD;

  if (rc)
    {
    if (preq->rq_ind.rq_jobfile.rq_data)
      free(preq->rq_ind.rq_jobfile.rq_data);

    preq->rq_ind.rq_jobfile.rq_data = 0;
    }

  return(rc);
  }
예제 #2
0
int
decode_DIS_JobCred(int sock, struct batch_request *preq)
{
	int rc;

	preq->rq_ind.rq_jobcred.rq_data = 0;
	preq->rq_ind.rq_jobcred.rq_type = disrui(sock, &rc);
	if (rc) return rc;

	preq->rq_ind.rq_jobcred.rq_data = disrcs(sock,
		(size_t *)&preq->rq_ind.rq_jobcred.rq_size,
		&rc);
	return rc;
}
예제 #3
0
int
decode_DIS_UserCred(int sock, struct batch_request *preq)
{
	int rc;

	rc = disrfst(sock, PBS_MAXUSER+1, preq->rq_ind.rq_usercred.rq_user);
	if (rc) return rc;

	preq->rq_ind.rq_usercred.rq_type = disrui(sock, &rc);
	if (rc) return rc;

	preq->rq_ind.rq_usercred.rq_data = 0;
	preq->rq_ind.rq_usercred.rq_data = disrcs(sock,
		(size_t *)&preq->rq_ind.rq_usercred.rq_size,
		&rc);
	return rc;
}