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 #include <pulse/version.h>
00031
00047 PA_C_DECL_BEGIN
00048
00050 typedef struct pa_mainloop_api pa_mainloop_api;
00051
00053 typedef enum pa_io_event_flags {
00054 PA_IO_EVENT_NULL = 0,
00055 PA_IO_EVENT_INPUT = 1,
00056 PA_IO_EVENT_OUTPUT = 2,
00057 PA_IO_EVENT_HANGUP = 4,
00058 PA_IO_EVENT_ERROR = 8
00059 } pa_io_event_flags_t;
00060
00062 typedef struct pa_io_event pa_io_event;
00064 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);
00066 typedef void (*pa_io_event_destroy_cb_t)(pa_mainloop_api*a, pa_io_event *e, void *userdata);
00067
00069 typedef struct pa_time_event pa_time_event;
00071 typedef void (*pa_time_event_cb_t)(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata);
00073 typedef void (*pa_time_event_destroy_cb_t)(pa_mainloop_api*a, pa_time_event *e, void *userdata);
00074
00076 typedef struct pa_defer_event pa_defer_event;
00078 typedef void (*pa_defer_event_cb_t)(pa_mainloop_api*a, pa_defer_event* e, void *userdata);
00080 typedef void (*pa_defer_event_destroy_cb_t)(pa_mainloop_api*a, pa_defer_event *e, void *userdata);
00081
00083 struct pa_mainloop_api {
00085 void *userdata;
00086
00088 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);
00090 void (*io_enable)(pa_io_event* e, pa_io_event_flags_t events);
00092 void (*io_free)(pa_io_event* e);
00094 void (*io_set_destroy)(pa_io_event *e, pa_io_event_destroy_cb_t cb);
00095
00097 pa_time_event* (*time_new)(pa_mainloop_api*a, const struct timeval *tv, pa_time_event_cb_t cb, void *userdata);
00099 void (*time_restart)(pa_time_event* e, const struct timeval *tv);
00101 void (*time_free)(pa_time_event* e);
00103 void (*time_set_destroy)(pa_time_event *e, pa_time_event_destroy_cb_t cb);
00104
00106 pa_defer_event* (*defer_new)(pa_mainloop_api*a, pa_defer_event_cb_t cb, void *userdata);
00108 void (*defer_enable)(pa_defer_event* e, int b);
00110 void (*defer_free)(pa_defer_event* e);
00112 void (*defer_set_destroy)(pa_defer_event *e, pa_defer_event_destroy_cb_t cb);
00113
00115 void (*quit)(pa_mainloop_api*a, int retval);
00116 };
00117
00119 void pa_mainloop_api_once(pa_mainloop_api*m, void (*callback)(pa_mainloop_api*m, void *userdata), void *userdata);
00120
00121 PA_C_DECL_END
00122
00123 #endif