/[monit]/monit/validate.c
ViewVC logotype

Diff of /monit/validate.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.21 by martinp, Sun Nov 3 21:50:30 2002 UTC revision 1.22 by rory, Sat Nov 9 01:08:24 2002 UTC
# Line 44  Line 44 
44  static sigjmp_buf timeout;  static sigjmp_buf timeout;
45    
46  /* Private Prototypes */  /* Private Prototypes */
47    static void mark_dependants(Process_T);
48    static void depend_validate(Process_T, int);
49  static void do_validate(Process_T);  static void do_validate(Process_T);
50  static void do_restart(Process_T, char *, ...) ;  static void do_restart(Process_T, char *, ...) ;
51  static void do_start(Process_T, char *, ...) ;  static void do_start(Process_T, char *, ...) ;
# Line 79  static void vlog(char * report, int n, P Line 81  static void vlog(char * report, int n, P
81    
82  /* ---------------------------------------------------------------- Public */  /* ---------------------------------------------------------------- Public */
83    
   
 /**  
  * Walk the process-list and validate each process  
  */  
84  void validate() {  void validate() {
85      
86    Process_T p;    Process_T p;
87    
88    if ( ! update_loadavg() ) {    if ( ! update_loadavg() ) {
# Line 92  void validate() { Line 90  void validate() {
90      log("Update of loadavg has failed!\n");      log("Update of loadavg has failed!\n");
91    
92    }    }
93    
94    for (p= processlist; p; p= p->next) {    for (p= processlist; p; p= p->next) {
95        
96      do_validate(p);      p->do_depend_validate= TRUE;
97        
98      }
99    
100      for (p= processlist; p; p= p->next) {
101    
102        if (p->dependantlist != NULL) {
103          mark_dependants(p);
104        }
105    
106      }
107    
108      for (p= processlist; p; p= p->next) {
109    
110        depend_validate(p, p->do_depend_validate);
111    
112    }    }
     
113  }  }
114      
115    
116    
117    
118  /* --------------------------------------------------------------- Private */  /* --------------------------------------------------------------- Private */
119    
120    void mark_dependants(Process_T p) {
121    
122      Dependant_T d;
123    
124      for (d= p->dependantlist; d; d= p->dependantlist->next) {
125        if (d->dependant == NULL) {
126          break;
127        }
128    
129        get_process(d->dependant)->do_depend_validate= FALSE;
130        if (d->next == NULL) {
131          break;
132        }
133        
134      }
135    
136    }
137    
138    /**
139     * Walk the process-list and validate each process
140     */
141    void depend_validate(Process_T p, int depend_validate_flag) {
142    
143      Process_T dp;
144      Dependant_T d;
145    
146      if (depend_validate_flag == FALSE) {
147        return;
148      }
149    
150      if (!do_not_validate(p)) {
151        do_validate(p);
152      }
153    
154      /* Now check dependants */
155      for (d= p->dependantlist; d; d= p->dependantlist->next) {
156        if (d->dependant == NULL) {
157          break;
158        } else {
159          dp= get_process(d->dependant);
160          if (!do_not_validate(dp)) {
161            depend_validate(dp, TRUE);
162            if (d->next == NULL) {
163              break;
164            }
165          }
166        }
167      }
168    }
169    
170  /**  /**
171   * Validate the given process - If the process is not running,   * Validate the given process - If the process is not running,
# Line 121  static void do_validate(Process_T p) { Line 183  static void do_validate(Process_T p) {
183    sigset_t ns,os;    sigset_t ns,os;
184    char report[STRLEN];    char report[STRLEN];
185    
   
   /* First, check for pre-conditions */  
   if (do_not_validate(p)) return;  
     
186    /* Set a SIGTERM block */    /* Set a SIGTERM block */
187    sigemptyset(&ns);    sigemptyset(&ns);
188    sigaddset(&ns, SIGTERM);    sigaddset(&ns, SIGTERM);

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26