Content-Type: text/plain
Content-Transfer-Encoding: 7bit
On Sun, 2004-12-19 at 20:11, Matthew Kent wrote:
> As part of some buffering I'm doing in my module I'm scheduling a
> recurring event to call a data dumping function to keep results fresh.
> After a fatal error of some kind in the module I need to remove this
> event to keep things neat and tidy.
Forgot something, sorry
- Matt
--=-qtn3zRwJSWYWEFWqroj0
Content-Disposition: attachment; filename=nagios-2.0b1-deschedule2.patch
Content-Type: text/x-patch; name=nagios-2.0b1-deschedule2.patch; charset=ANSI_X3.4-1968
Content-Transfer-Encoding: 7bit
--- ../nagios_orig/include/nagios.h.in 2004-12-09 01:48:34.000000000 -0500
+++ include/nagios.h.in 2004-12-19 19:34:37.000000000 -0500
@@ -501,6 +501,7 @@
/**** Monitoring/Event Handler Functions ****/
int schedule_new_event(int,int,time_t,int,unsigned long,void *,int,void *,void *); /* schedules a new timed event */
void reschedule_event(timed_event *,timed_event **); /* reschedules an event */
+int deschedule_event(int,int,void *,void *); /* removes an event from the schedule */
void add_event(timed_event *,timed_event **); /* adds an event to the execution queue */
void remove_event(timed_event *,timed_event **); /* remove an event from the execution queue */
int event_execution_loop(void); /* main monitoring/event handler loop */
--- ../nagios_orig/base/events.c 2004-11-30 12:16:22.000000000 -0500
+++ base/events.c 2004-12-19 20:13:45.000000000 -0500
@@ -743,6 +743,44 @@
}
+/* remove event from schedule */
+int deschedule_event(int event_type, int high_priority, void *event_data, void *event_args){
+ timed_event **event_list;
+ timed_event *temp_event;
+ int found=FALSE;
+
+#ifdef DEBUG0
+ printf("deschedule_event() start\n");
+#endif
+
+ if(high_priority==TRUE)
+ event_list=&event_list_high;
+ else
+ event_list=&event_list_low;
+
+ for(temp_event=*event_list;temp_event!=NULL;temp_event=temp_event->next){
+ if(temp_event->event_type==event_type && temp_event->event_data==event_data && temp_event->event_args==event_args){
+ found=TRUE;
+ break;
+ }
+ }
+
+ /* remove the event from the event list */
+ if (found){
+ remove_event(temp_event,event_list);
+ free(temp_event);
+ }
+ else{
+ return ERROR;
+ }
+
+#ifdef DEBUG0
+ printf("deschedule_event() end\n");
+#endif
+
+ return OK;
+ }
+
/* add an event to list ordered by execution time */
void add_event(timed_event *event,timed_event **event_list){
--=-qtn3zRwJSWYWEFWqroj0--
This post was automatically imported from historical nagios-devel mailing list archives
Original poster: [email protected]