Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals

process.h

Go to the documentation of this file.
00001 /* -*-C-*- */
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 

Generated on Fri Jan 20 10:12:18 2006 by  doxygen 1.4.2