Author: Ghostwolf <foxxe@wtfs.net>
[ircu2.10.12-pk.git] / include / ircd_events.h
index 54d034f32c43dd21564f6f8449fdba82d6c21703..2dfe9241213b5fcd3f7000364dd2c112df065125 100644 (file)
@@ -82,6 +82,8 @@ struct GenHeader {
 #define GEN_DESTROY    0x0001  /* generator is to be destroyed */
 #define GEN_MARKED     0x0002  /* generator is marked for destruction */
 #define GEN_ACTIVE     0x0004  /* generator is active */
+#define GEN_READD      0x0008  /* generator (timer) must be re-added */
+#define GEN_ERROR      0x0010  /* an error occurred on the generator */
 
 struct Socket {
   struct GenHeader s_header;   /* generator information */
@@ -141,6 +143,7 @@ struct Timer {
 #define t_ed_int(tim)  ((tim)->t_header.gh_engdata.ed_int)
 #define t_ed_ptr(tim)  ((tim)->t_header.gh_engdata.ed_ptr)
 #define t_active(tim)  ((tim)->t_header.gh_flags & GEN_ACTIVE)
+#define t_onqueue(tim) ((tim)->t_header.gh_prev_p)
 
 struct Event {
   struct Event*         ev_next;       /* linked list of events on queue */
@@ -208,6 +211,8 @@ do {                                                                              \
     event_generate(ET_DESTROY, _gen, 0);                                     \
   }                                                                          \
 } while (0)
+#define gen_clear_error(gen)                                                 \
+       (((struct GenHeader*) (gen))->gh_flags &= ~GEN_ERROR)
 
 void gen_dequeue(void* arg);
 
@@ -215,6 +220,7 @@ void event_init(int max_sockets);
 void event_loop(void);
 void event_generate(enum EventType type, void* arg, int data);
 
+struct Timer* timer_init(struct Timer* timer);
 void timer_add(struct Timer* timer, EventCallBack call, void* data,
               enum TimerType type, time_t value);
 void timer_del(struct Timer* timer);