IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 4, 2005, 5:35:47 PM (21 years ago)
Author:
eugene
Message:

substantial dev work on scheduler/pcontrol/pclient

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pcontrol/CheckBusyJob.c

    r3212 r4450  
    55  int      i;
    66  int      status;
     7  int      outstate;
    78  char    *p;
    89  char     string[64];
     
    1112
    1213  /** must have a valid host : if not? **/
    13   host = job[0].host;
    14   /*** why is this a type error? ***/
     14  host = (Host *) job[0].host;
    1515
    1616  InitIOBuffer (&buffer, 0x100);
     
    3434
    3535    case PCLIENT_GOOD:
    36       fprintf (stderr, "message received (CheckBusyJob)\n"); 
     36      /* fprintf (stderr, "message received (CheckBusyJob)\n");   */
    3737      break;
    3838
     
    6060  }
    6161
    62   /** job has exited : move to DONE stack (host still BUSY) **/
    63   if (!strcmp(string, "EXIT")) {
    64     p = memstr (buffer.buffer, "EXITST", buffer.Nbuffer);
    65     sscanf (p, "%*s %d", &job[0].exit_status);
    66     PutJob (job, PCONTROL_JOB_DONE, STACK_BOTTOM);
    67     job[0].state = PCONTROL_JOB_EXIT;
    68     FreeIOBuffer (&buffer);
    69     return (TRUE);
    70   }
    71   /** job has crashed : move to DONE stack (host still BUSY) */
    72   if (!strcmp(string, "CRASH")) {
    73     p = memstr (buffer.buffer, "EXITST", buffer.Nbuffer);
    74     sscanf (p, "%*s %d", &job[0].exit_status);
    75     PutJob (job, PCONTROL_JOB_DONE, STACK_BOTTOM);
    76     job[0].state = PCONTROL_JOB_CRASH;
    77     FreeIOBuffer (&buffer);
    78     return (TRUE);
     62  /* exit status better be either EXIT or CRASH */
     63  outstate = PCONTROL_JOB_BUSY;
     64  if (!strcmp(string, "EXIT")) outstate = PCONTROL_JOB_EXIT;
     65  if (!strcmp(string, "CRASH")) outstate = PCONTROL_JOB_CRASH;
     66  if (outstate == PCONTROL_JOB_BUSY) {
     67    fprintf (stderr, "programming error : should not reach here (CheckJob)\n");
     68    exit (1);
    7969  }
    8070
    81   fprintf (stderr, "programming error : should not reach here (CheckJob)\n");
    82   exit (1);
     71  /* parse the exit status and sizes of output buffers */
     72  p = memstr (buffer.buffer, "EXITST", buffer.Nbuffer);
     73  sscanf (p, "%*s %d", &job[0].exit_status);
     74  p = memstr (buffer.buffer, "STDOUT", buffer.Nbuffer);
     75  sscanf (p, "%*s %d", &job[0].stdout_size);
     76  p = memstr (buffer.buffer, "STDERR", buffer.Nbuffer);
     77  sscanf (p, "%*s %d", &job[0].stderr_size);
     78
     79  /** job has exited : move to DONE stack (host still BUSY) **/
     80  PutJob (job, PCONTROL_JOB_DONE, STACK_BOTTOM);
     81  job[0].state = outstate;
     82  FreeIOBuffer (&buffer);
     83  return (TRUE);
    8384}
    8485
Note: See TracChangeset for help on using the changeset viewer.