00001 #ifndef foomainloopapihfoo
00002 #define foomainloopapihfoo
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <sys/time.h>
00027 #include <time.h>
00028
00029 #include <pulse/cdecl.h>
00030
00046 PA_C_DECL_BEGIN
00047
00049 typedef struct pa_mainloop_api pa_mainloop_api;
00050
00052 typedef enum pa_io_event_flags {
00053 PA_IO_EVENT_NULL = 0,
00054 PA_IO_EVENT_INPUT = 1,
00055 PA_IO_EVENT_OUTPUT = 2,
00056 PA_IO_EVENT_HANGUP = 4,
00057 PA_IO_EVENT_ERROR = 8
00058 } pa_io_event_flags_t;
00059
00061 typedef struct pa_io_event pa_io_event;
00063 typedef void (*pa_io_event_cb_t)(pa_mainloop_api*ea, pa_io_event* e, int fd, pa_io_event_flags_t events, void *userdata);
00065 typedef void (*pa_io_event_destroy_cb_t)(pa_mainloop_api*a, pa_io_event *e, void *userdata);
00066
00068 typedef struct pa_time_event pa_time_event;
00070 typedef void (*pa_time_event_cb_t)(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata);
00072 typedef void (*pa_time_event_destroy_cb_t)(pa_mainloop_api*a, pa_time_event *e, void *userdata);
00073
00075 typedef struct pa_defer_event pa_defer_event;
00077 typedef void (*pa_defer_event_cb_t)(pa_mainloop_api*a, pa_defer_event* e, void *userdata);
00079 typedef void (*pa_defer_event_destroy_cb_t)(pa_mainloop_api*a, pa_defer_event *e, void *userdata);
00080
00082 struct pa_mainloop_api {
00084 void *userdata;
00085
00087 pa_io_event* (*io_new)(pa_mainloop_api*a, int fd, pa_io_event_flags_t events, pa_io_event_cb_t cb, void *userdata);
00089 void (*io_enable)(pa_io_event* e, pa_io_event_flags_t events);
00091 void (*io_free)(pa_io_event* e);
00093 void (*io_set_destroy)(pa_io_event *e, pa_io_event_destroy_cb_t cb);
00094
00096 pa_time_event* (*time_new)(pa_mainloop_api*a, const struct timeval *tv, pa_time_event_cb_t cb, void *userdata);
00098 void (*time_restart)(pa_time_event* e, const struct timeval *tv);
00100 void (*time_free)(pa_time_event* e);
00102 void (*time_set_destroy)(pa_time_event *e, pa_time_event_destroy_cb_t cb);
00103
00105 pa_defer_event* (*defer_new)(pa_mainloop_api*a, pa_defer_event_cb_t cb, void *userdata);
00107 void (*defer_enable)(pa_defer_event* e, int b);
00109 void (*defer_free)(pa_defer_event* e);
00111 void (*defer_set_destroy)(pa_defer_event *e, pa_defer_event_destroy_cb_t cb);
00112
00114 void (*quit)(pa_mainloop_api*a, int retval);
00115 };
00116
00118 void pa_mainloop_api_once(pa_mainloop_api*m, void (*callback)(pa_mainloop_api*m, void *userdata), void *userdata);
00119
00120 PA_C_DECL_END
00121
00122 #endif