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 #include <sys/time.h>
00026 #include <time.h>
00027
00028 #include <pulse/cdecl.h>
00029
00045 PA_C_DECL_BEGIN
00046
00048 typedef struct pa_mainloop_api pa_mainloop_api;
00049
00051 typedef enum pa_io_event_flags {
00052 PA_IO_EVENT_NULL = 0,
00053 PA_IO_EVENT_INPUT = 1,
00054 PA_IO_EVENT_OUTPUT = 2,
00055 PA_IO_EVENT_HANGUP = 4,
00056 PA_IO_EVENT_ERROR = 8
00057 } pa_io_event_flags_t;
00058
00060 typedef struct pa_io_event pa_io_event;
00062 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);
00064 typedef void (*pa_io_event_destroy_cb_t)(pa_mainloop_api*a, pa_io_event *e, void *userdata);
00065
00067 typedef struct pa_time_event pa_time_event;
00069 typedef void (*pa_time_event_cb_t)(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata);
00071 typedef void (*pa_time_event_destroy_cb_t)(pa_mainloop_api*a, pa_time_event *e, void *userdata);
00072
00074 typedef struct pa_defer_event pa_defer_event;
00076 typedef void (*pa_defer_event_cb_t)(pa_mainloop_api*a, pa_defer_event* e, void *userdata);
00078 typedef void (*pa_defer_event_destroy_cb_t)(pa_mainloop_api*a, pa_defer_event *e, void *userdata);
00079
00081 struct pa_mainloop_api {
00083 void *userdata;
00084
00086 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);
00088 void (*io_enable)(pa_io_event* e, pa_io_event_flags_t events);
00090 void (*io_free)(pa_io_event* e);
00092 void (*io_set_destroy)(pa_io_event *e, pa_io_event_destroy_cb_t cb);
00093
00095 pa_time_event* (*time_new)(pa_mainloop_api*a, const struct timeval *tv, pa_time_event_cb_t cb, void *userdata);
00097 void (*time_restart)(pa_time_event* e, const struct timeval *tv);
00099 void (*time_free)(pa_time_event* e);
00101 void (*time_set_destroy)(pa_time_event *e, pa_time_event_destroy_cb_t cb);
00102
00104 pa_defer_event* (*defer_new)(pa_mainloop_api*a, pa_defer_event_cb_t cb, void *userdata);
00106 void (*defer_enable)(pa_defer_event* e, int b);
00108 void (*defer_free)(pa_defer_event* e);
00110 void (*defer_set_destroy)(pa_defer_event *e, pa_defer_event_destroy_cb_t cb);
00111
00113 void (*quit)(pa_mainloop_api*a, int retval);
00114 };
00115
00117 void pa_mainloop_api_once(pa_mainloop_api*m, void (*callback)(pa_mainloop_api*m, void *userdata), void *userdata);
00118
00119 PA_C_DECL_END
00120
00121 #endif