src/server/daemon/event.c

changeset 555
66b0accda0a8
parent 552
4ed0e46aa9dc
child 556
b036ccad4b49
equal deleted inserted replaced
554:e0a6b761ddbc 555:66b0accda0a8
30 #include <cx/linked_list.h> 30 #include <cx/linked_list.h>
31 #include "../util/atomic.h" 31 #include "../util/atomic.h"
32 32
33 #include "event.h" 33 #include "event.h"
34 34
35 CxMap *event_handler_map = NULL; 35 static CxMap *event_handler_map = NULL;
36 int numevhandlers = 0; 36 int numevhandlers = 0;
37 37
38 EVHandler *default_event_handler = NULL; 38 EVHandler *default_event_handler = NULL;
39 39
40 EVHandler *last_handler_c = NULL; 40 EVHandler *last_handler_c = NULL;
74 last_handler_c = e; 74 last_handler_c = e;
75 numevhandlers++; 75 numevhandlers++;
76 } 76 }
77 77
78 return ret; 78 return ret;
79 }
80
81 void shutdown_eventhandlers_wait(void) {
82 CxIterator i = cxMapIteratorValues(event_handler_map);
83 cx_foreach(EVHandler *, e, i) {
84 evhandler_shutdown(e);
85 }
86
87 i = cxMapIteratorValues(event_handler_map);
88 cx_foreach(EVHandler *, e, i) {
89 evhandler_wait_and_destroy(e);
90 }
91
92 cxMapDestroy(event_handler_map);
79 } 93 }
80 94
81 void evhandler_shutdown(EVHandler *h) { 95 void evhandler_shutdown(EVHandler *h) {
82 for(int i=0;i<h->numins;i++) { 96 for(int i=0;i<h->numins;i++) {
83 ev_instance_shutdown(h->instances[i]); 97 ev_instance_shutdown(h->instances[i]);

mercurial