00001
00002 #ifndef PROCESS_H
00003 #define PROCESS_H
00004
00005
00016 #include <sys/timeb.h>
00017 #include <sys/types.h>
00018 #include "environment.h"
00019 #include "array.h"
00020
00021
00022 #define PROCESS_LEN_TAG 64
00023 #define PROCESS_LEN_COMMAND 256
00024 #define PROCESS_LEN_ARGUMENTS 256
00025 #define PROCESS_LEN_WDIR 256
00026 #define PROCESS_LEN_DESCRIPTION 256
00029 enum RequiredState {
00030 PROCESS_ACTIVE,
00031 PROCESS_STANDBY
00032 };
00033
00035 enum RestartPolicy {
00036 PROCESS_RESTART_YES,
00037 PROCESS_RESTART_NO,
00038 PROCESS_RESTART_ALL
00039 };
00040
00042 enum ProcessState {
00043 PROCESS_STATE_OFF,
00044 PROCESS_STATE_ON,
00045 PROCESS_STATE_ERR,
00046 PROCESS_STATE_WAIT
00047 };
00048
00049
00053 typedef struct {
00054
00055 int pid;
00056 char tag[PROCESS_LEN_TAG];
00057 char state;
00058 double cpuload;
00059 char init_command[PROCESS_LEN_COMMAND];
00061 char command[PROCESS_LEN_COMMAND];
00062 char arguments[PROCESS_LEN_ARGUMENTS];
00064 int init_on_restart;
00065 int required_state;
00066 unsigned int max_subsequent_failures;
00067 unsigned int cputime;
00068 char wdir[PROCESS_LEN_WDIR];
00069 char description[PROCESS_LEN_DESCRIPTION];
00070 time_t start_time;
00071 time_t stop_time;
00072 int restart_policy;
00073 float delay;
00074 float term_delay;
00075 uid_t uid;
00076 gid_t gid;
00077 unsigned int n_starts;
00078 unsigned int n_truncations;
00079 unsigned int n_failures;
00080 unsigned int n_subsequent_failures;
00081 int failure_timer;
00082 Array *environment;
00084 int inputPipe[2];
00085 int outputPipe[2];
00087 } ProcessData;
00088
00089 void process_data_init(ProcessData *p, const char *tag);
00090 void process_data_reset(ProcessData *pd);
00091 int process_start(ProcessData *pd,int init);
00092 int process_stop(ProcessData *pd, int msec_wait);
00093 int process_shutdown(ProcessData *pd);
00094 int process_exists(ProcessData *pd);
00095 int process_terminate(ProcessData *pid);
00096 int process_kill(ProcessData *pid);
00097 void process_reset_statistics(ProcessData *pd);
00098 void process_set_attribute(ProcessData *pd, const char*attr, const char *value);
00099 void process_add_environment(ProcessData *pd, const char *attr, const char *value);
00100 void process_notify_failure(ProcessData *pd) ;
00101 void process_notify_truncation(ProcessData *pd) ;
00102 void process_notify_start(ProcessData *pd);
00103 void process_reset_failures(ProcessData *pd);
00104 void process_decrement_failure_timer(ProcessData *pd);
00105 int process_has_max_subsequent_failures(ProcessData *pd);
00106 void process_destroy(void *data) ;
00107
00108 ProcessData *process_array_find_by_tag(Array *array, const char *tag);
00109 ProcessData *process_array_find_by_pid(Array *array, int pid);
00110
00111 #endif
00112