event_loop.h
Go to the documentation of this file.
1 #ifndef EVENT_LOOP_H
2 #define EVENT_LOOP_H
3 
22 #include <signal.h>
23 #include "cgul_exception.h"
24 #include "event_loop_common.h"
25 
26 CGUL_BEGIN_C
27 
28 /*************************************************************************
29  * Opaque Pointers
30  *************************************************************************/
31 
33 typedef struct event_loop* event_loop_t;
34 
36 typedef void* event_loop__timeout_t;
37 
38 /*************************************************************************
39  * C Callback Interface
40  *************************************************************************/
41 
57 typedef void (*event_loop__fd_ready_cb_t)(cgul_exception_t* cex,
58  int fd,
59  void* data);
60 
78 typedef void (*event_loop__timeout_cb_t)(cgul_exception_t* cex,
79  event_loop__timeout_t timeout,
80  void* data);
81 
98 typedef void (*event_loop__signal_cb_t)(cgul_exception_t* cex,
99  int signal_number,
100  void* data);
101 
102 /*************************************************************************
103  * C++ Listener Interface
104  *************************************************************************/
105 
106 #ifdef __cplusplus
107 
161 class event_loop_listener {
162 public:
163 
167  event_loop_listener()
168  {
169  /* empty */
170  }
171 
175  virtual
176  ~event_loop_listener()
177  {
178  /* empty */
179  }
180 };
181 
212 #define EVENT_LOOP__UPCAST_FD_READY(ptr_to_mem) \
213  static_cast<void (event_loop_listener::*)(int)>(ptr_to_mem)
214 
240 #define EVENT_LOOP__UPCAST_TIMEOUT(ptr_to_mem) \
241  static_cast<void (event_loop_listener::*)(event_loop__timeout_t)>(ptr_to_mem)
242 
268 #define EVENT_LOOP__UPCAST_SIGNAL_HANDLER(ptr_to_mem) \
269  static_cast<void (event_loop_listener::*)(int)>(ptr_to_mem)
270 
271 #endif /* __cplusplus */
272 
273 /*************************************************************************
274  * event_loop
275  *************************************************************************/
276 
290 extern event_loop_t
291 event_loop__get_instance(cgul_exception_t* cex);
292 
299 extern void
301 
319 extern event_loop_t
320 event_loop__new(cgul_exception_t* cex);
321 
335 extern void
337 
346 extern void
347 event_loop__start(cgul_exception_t* cex,
348  event_loop_t loop);
349 
359 extern void
360 event_loop__stop(cgul_exception_t* cex,
361  event_loop_t loop);
362 
391 extern void
392 event_loop__add_signal_handler(cgul_exception_t* cex,
393  event_loop_t loop,
394  int signal_number,
396  void* cb_data);
397 
398 #ifdef __cplusplus
399 
444 extern void
445 event_loop__add_signal_handler_listener(
446  cgul_exception_t* cex,
447  event_loop_t loop,
448  int signal_number,
449  event_loop_listener* obj,
450  void (event_loop_listener::*listener)(int));
451 
452 #endif
453 
465 extern void
466 event_loop__remove_signal_handler(cgul_exception_t* cex,
467  event_loop_t loop,
468  int signal_number);
469 
501 event_loop__add_timeout(cgul_exception_t* cex,
502  event_loop_t loop,
503  double period,
505  void* cb_data);
506 
507 #ifdef __cplusplus
508 
558 event_loop__add_timeout_listener(
559  cgul_exception_t* cex,
560  event_loop_t loop,
561  double period,
562  event_loop_listener* obj,
563  void (event_loop_listener::*listener)(event_loop__timeout_t));
564 
565 #endif
566 
583 extern void
584 event_loop__remove_timeout(cgul_exception_t* cex,
585  event_loop_t loop,
586  event_loop__timeout_t timeout);
587 
612 extern void
613 event_loop__add_read_fd(cgul_exception_t* cex,
614  event_loop_t loop,
615  int fd,
617  void* cb_data);
618 
619 #ifdef __cplusplus
620 
658 extern void
659 event_loop__add_read_fd_listener(
660  cgul_exception_t* cex,
661  event_loop_t loop,
662  int fd,
663  event_loop_listener* obj,
664  void (event_loop_listener::*listener)(int));
665 
666 #endif /* __cplusplus */
667 
677 extern void
678 event_loop__remove_read_fd(cgul_exception_t* cex,
679  event_loop_t loop,
680  int fd);
681 
706 extern void
707 event_loop__add_write_fd(cgul_exception_t* cex,
708  event_loop_t loop,
709  int fd,
711  void* cb_data);
712 
713 #ifdef __cplusplus
714 
752 extern void
753 event_loop__add_write_fd_listener(
754  cgul_exception_t* cex,
755  event_loop_t loop,
756  int fd,
757  event_loop_listener* obj,
758  void (event_loop_listener::*listener)(int));
759 
760 #endif /* __cplusplus */
761 
771 extern void
772 event_loop__remove_write_fd(cgul_exception_t* cex,
773  event_loop_t loop,
774  int fd);
775 
800 extern void
801 event_loop__add_exception_fd(cgul_exception_t* cex,
802  event_loop_t loop,
803  int fd,
805  void* cb_data);
806 
807 #ifdef __cplusplus
808 
846 extern void
847 event_loop__add_exception_fd_listener(
848  cgul_exception_t* cex,
849  event_loop_t loop,
850  int fd,
851  event_loop_listener* obj,
852  void (event_loop_listener::*listener)(int));
853 
854 #endif /* __cplusplus */
855 
865 extern void
866 event_loop__remove_exception_fd(cgul_exception_t* cex,
867  event_loop_t loop,
868  int fd);
869 
870 CGUL_END_C
871 
872 #endif /* EVENT_LOOP_H */
void(* event_loop__fd_ready_cb_t)(cgul_exception_t *cex, int fd, void *data)
Definition: event_loop.h:57
void event_loop__remove_exception_fd(cgul_exception_t *cex, event_loop_t loop, int fd)
event_loop_t event_loop__get_instance(cgul_exception_t *cex)
void * event_loop__timeout_t
Definition: event_loop.h:36
void event_loop__remove_write_fd(cgul_exception_t *cex, event_loop_t loop, int fd)
void event_loop__stop(cgul_exception_t *cex, event_loop_t loop)
void event_loop__start(cgul_exception_t *cex, event_loop_t loop)
void event_loop__remove_read_fd(cgul_exception_t *cex, event_loop_t loop, int fd)
void event_loop__put_instance()
void event_loop__delete(event_loop_t loop)
void(* event_loop__timeout_cb_t)(cgul_exception_t *cex, event_loop__timeout_t timeout, void *data)
Definition: event_loop.h:78
typedefCGUL_BEGIN_C struct event_loop * event_loop_t
Definition: event_loop.h:33
void(* event_loop__signal_cb_t)(cgul_exception_t *cex, int signal_number, void *data)
Definition: event_loop.h:98
event_loop__timeout_t event_loop__add_timeout(cgul_exception_t *cex, event_loop_t loop, double period, event_loop__timeout_cb_t cb, void *cb_data)
event_loop_t event_loop__new(cgul_exception_t *cex)
void event_loop__add_write_fd(cgul_exception_t *cex, event_loop_t loop, int fd, event_loop__fd_ready_cb_t cb, void *cb_data)
void event_loop__add_read_fd(cgul_exception_t *cex, event_loop_t loop, int fd, event_loop__fd_ready_cb_t cb, void *cb_data)
void event_loop__remove_timeout(cgul_exception_t *cex, event_loop_t loop, event_loop__timeout_t timeout)
void event_loop__add_signal_handler(cgul_exception_t *cex, event_loop_t loop, int signal_number, event_loop__signal_cb_t cb, void *cb_data)
void event_loop__add_exception_fd(cgul_exception_t *cex, event_loop_t loop, int fd, event_loop__fd_ready_cb_t cb, void *cb_data)
void event_loop__remove_signal_handler(cgul_exception_t *cex, event_loop_t loop, int signal_number)