IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 12, 2005, 9:34:34 AM (21 years ago)
Author:
eugene
Message:

pcontrol dev

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/include/pcontrol.h

    r3187 r3203  
    77# include <sys/wait.h>
    88
    9 /** pcontrol global data **/
     9typedef struct timeval Ptime;
     10typedef unsigned long long IDtype;
    1011
    1112/** job status values **/
    12 enum {
     13typedef enum {
    1314  PCONTROL_JOB_PENDING,
    1415  PCONTROL_JOB_BUSY, 
    1516  PCONTROL_JOB_EXIT,
    1617  PCONTROL_JOB_CRASH,
     18  PCONTROL_JOB_HUNG, 
     19  PCONTROL_JOB_DONE, 
    1720} JobStat;
    1821
    1922/** job status values **/
    20 enum {
     23typedef enum {
    2124  PCONTROL_JOB_ANYHOST,
    2225  PCONTROL_JOB_WANTHOST,
    23   PCONTROL_JOB_NEEDHOST, 
     26  PCONTROL_JOB_NEEDHOST,
    2427} JobMode;
    2528
    2629/** host status values **/
    27 enum {
     30typedef enum {
    2831  PCONTROL_HOST_IDLE,
    2932  PCONTROL_HOST_BUSY, 
    3033  PCONTROL_HOST_DOWN,
     34  PCONTROL_HOST_DONE,
    3135  PCONTROL_HOST_OFF,
    3236} HostStat;
     37
     38/* stack special positions */
     39typedef enum {
     40  STACK_TOP = 0,
     41  STACK_BOTTOM = -1,
     42} StackWhere;
     43
     44typedef enum {
     45  PCLIENT_HUNG = -1,
     46  PCLIENT_DOWN = 0,
     47  PCLIENT_GOOD = 1,
     48} PclientStat;
    3349
    3450typedef struct {
     
    4965} Fifo;
    5066
    51 typedef struct timeval Ptime;
    52 
    5367/* data to define a job */
    5468typedef struct {
    55   int        argc;
    56   char     **argv;
    57   char      *hostname;
    58   int        exitstatus;
    59   JobMode    mode;
    60   JobStat    status;
    61   IOBuffer   stdin;
    62   IOBuffer   stdout;
    63   IOBuffer   stderr;
    64   Ptime      start;
    65   Ptime      accum;
    66   Ptime      timer;
     69  int          argc;
     70  char       **argv;
     71  char        *hostname;
     72  int          exit_status;
     73  int          Reset;
     74  JobMode      mode;
     75  JobStat      state;
     76  JobStat      stack;
     77  IOBuffer     stdout;
     78  IOBuffer     stderr;
     79  Ptime        start;
     80  Ptime        accum;
     81  Ptime        timer;
    6782  struct Host *host;
    68   int        pid;
    69   IDtype     JobID;
     83  int          pid;
     84  IDtype       JobID;
    7085} Job;
    7186
    7287/* data to define a host machine */
    7388typedef struct {
    74   char      *hostname;
    75   int        stdin;
    76   int        stdout;
    77   int        stderr;
    78   int        markoff;
    79   HostStat   status;
    80   Ptime      start;
    81   Ptime      accum;
    82   Ptime      timer;
     89  char       *hostname;
     90  int         stdin;
     91  int         stdout;
     92  int         stderr;
     93  int         markoff;
     94  int         pid;
     95  HostStat    stack;
     96  Ptime       start;
     97  Ptime       accum;
     98  Ptime       timer;
     99  IDtype      HostID;
    83100  struct Job *job;
    84101} Host;
     
    88105  int    Nobject;
    89106  int    NOBJECT;
    90 } Queue;
     107} Stack;
    91108
     109/* these should be loaded from ConfigInit or from opihi variables */
    92110static char *CONNECT;  /* connection method (ssh, rsh, etc) */
    93111static char *PCLIENT;  /* shell on remote host (eg, pclient) */
     112
     113# define FREE(X) if (X != NULL) { free (X); }
     114# define CLOSE(FD) { if (FD) close (FD); FD = 0; }
    94115
    95116/** IOBuffers allow the following operations (see pclient.h) **/
     
    99120void FreeIOBuffer (IOBuffer *buffer);
    100121
    101 # define FREE(X) if (X != NULL) { free (X); }
    102 
    103 enum {
    104   QUEUE_TOP = 0,
    105   QUEUE_BOTTOM = -1,
    106 } QueueWhere;
    107 
     122void *GetStack (Stack *stack, int where);
     123int PutStack (Stack *stack, int where, void *object);
     124Stack *InitStack ();
     125Stack *GetHostStack (int StackID);
     126int PutHost (Host *host, int StackID, int where);
     127Host *GetHost (int StackID, int where);
     128int FindHost (IDtype HostID, int StackID);
     129int FindNamedHost (char *name, int StackID);
     130void AddHost (char *hostname);
     131void DownHost (Host *host);
     132void DelHost (Host *host);
     133int CheckSystem ();
     134int CheckBusyJobs ();
     135int CheckDoneJobs ();
     136int CheckDoneHosts ();
     137int CheckLiveHosts ();
     138int CheckDownHosts ();
     139int CheckIdleHosts ();
     140int CheckIdleHost (Host *host);
     141void InitIDs ();
     142IDtype NextJobID ();
     143IDtype NextHostID ();
     144void PrintID (FILE *f, IDtype ID);
     145int CheckBusyJob (Job *job);
     146int StartHost (Host *host);
     147int CheckDoneHost (Host *host);
     148int CheckDoneJob (Job *job);
     149int GetJobOutput (Job *job, char *channel);
     150int ResetJob (Job *job);
     151int PclientCommand (Host *host, char *command, IOBuffer *buffer);
     152int rconnect (char *command, char *hostname, char *shell, int *stdio);
     153int CheckHost (Host *host);
     154char *memstr (char *m1, char *m2, int n);
     155Stack *GetJobStack (int StackID);
     156int PutJob (Job *job, int StackID, int where);
     157Job *GetJob (int StackID, int where);
     158int FindJob (IDtype JobID, int StackID);
     159IDtype AddJob (char *hostname, JobMode mode, int timeout, int argc, char **argv);
     160void KillJob (Job *job);
     161void DelJob (Job *job);
     162Host *UnlinkJobAndHost (Job *job);
     163void LinkJobAndHost (Job *job, Host *host);
Note: See TracChangeset for help on using the changeset viewer.