IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 4, 2005, 7:51:09 AM (21 years ago)
Author:
eugene
Message:

added test of exit/crash job stacks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pantasks/ControllerOps.c

    r4705 r4706  
    2424    GetJobOutput ("stdout", job[0].pid, &job[0].stdout, job[0].stdout_size);
    2525    GetJobOutput ("stderr", job[0].pid, &job[0].stderr, job[0].stderr_size);
     26    DeleteControllerJob (job);
    2627  } 
    2728  return (TRUE);
    2829}
    2930
     31int DeleteControllerJob (Job *job) {
     32
     33  int status;
     34  char cmd[128];
     35  IOBuffer buffer;
     36
     37  sprintf (cmd, "delete %d", job[0].pid);
     38  InitIOBuffer (&buffer, 0x100);
     39  status = ControllerCommand (cmd, CONTROLLER_PROMPT, &buffer);
     40  FreeIOBuffer (&buffer);
     41  return (status);
     42}
     43 
    3044/* ask controller about job status */
    3145int CheckControllerJobStatus (Job *job) {
     
    3953  InitIOBuffer (&buffer, 0x100);
    4054  status = ControllerCommand (cmd, CONTROLLER_PROMPT, &buffer);
    41 
    42   /* check on success of controller command */
    43   switch (status) {
    44     case CONTROLLER_DOWN:
    45       if (VerboseMode()) fprintf (stderr, "controller is down\n");
    46       FreeIOBuffer (&buffer);
    47       return (FALSE);
    48 
    49     case CONTROLLER_HUNG:
    50       if (VerboseMode()) fprintf (stderr, "controller is not responding\n");
    51       FreeIOBuffer (&buffer);
    52       return (FALSE);
    53 
    54     case CONTROLLER_GOOD:
    55       if (VerboseMode()) fprintf (stderr, "message received (CheckControllerJobStatus)\n");
    56       break;
    57 
    58     default:
    59       if (VerboseMode()) fprintf (stderr, "unknown status for controller command: programming error\n"); 
    60       exit (1);
     55  if (!status) {
     56    FreeIOBuffer (&buffer);
     57    return (FALSE);
    6158  }
    6259
     
    137134int SubmitControllerJob (Job *job) {
    138135
    139   int i, Nchar;
     136  int i, Nchar, status;
    140137  char *cmd, *p, string[64];
    141138  IOBuffer buffer;
     
    177174
    178175  InitIOBuffer (&buffer, 0x100);
    179   ControllerCommand (cmd, CONTROLLER_PROMPT, &buffer);
     176  status = ControllerCommand (cmd, CONTROLLER_PROMPT, &buffer);
    180177  free (cmd);
    181178
     
    317314  /* send command, is pipe still open? */
    318315  status = write_fmt (stdin_cntl, "%s\n", cmd);
    319   if ((status == -1) && (errno == EPIPE)) return (CONTROLLER_DOWN);
     316  if ((status == -1) && (errno == EPIPE)) {
     317    ControllerStatus = FALSE;
     318    if (VerboseMode()) fprintf (stderr, "controller is down\n");
     319    return (FALSE);
     320  }
    320321 
    321322  /* watch for response - wait up to 1 second */
     
    329330  if (status ==  0) {
    330331    ControllerStatus = FALSE;
    331     return (CONTROLLER_DOWN);
    332   }
    333   if (status == -1) return (CONTROLLER_HUNG);
     332    if (VerboseMode()) fprintf (stderr, "controller is down\n");
     333    return (FALSE);
     334  }
     335  if (status == -1) {
     336    if (VerboseMode()) fprintf (stderr, "controller is not responding\n");
     337    return (FALSE);
     338  }
    334339
    335340  /* need to strip off the prompt */
     
    339344    bzero (buffer[0].buffer + buffer[0].Nbuffer, buffer[0].Nalloc - buffer[0].Nbuffer);
    340345  }
    341   return (CONTROLLER_GOOD);
     346  if (VerboseMode()) fprintf (stderr, "message received\n");
     347  return (TRUE);
    342348}
    343349
     
    396402  InitIOBuffer (&buffer, 0x100);
    397403  status = ControllerCommand (cmd, CONTROLLER_PROMPT, &buffer);
     404  FreeIOBuffer (&buffer);
     405  return (status);
    398406
    399407  /** need to interpret output message & free things **/
    400   FreeIOBuffer (&buffer);
    401   return (TRUE);
    402408}
    403409
Note: See TracChangeset for help on using the changeset viewer.