summaryrefslogtreecommitdiffstats
path: root/avahi-common/watch.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-08-14 22:11:35 +0000
committerLennart Poettering <lennart@poettering.net>2005-08-14 22:11:35 +0000
commit769c00f228ba0d37217aaf1424dedde390e7a01c (patch)
treee641d94f918a133f59e0eeb8e07109247d4d7aab /avahi-common/watch.h
parenta4acfaf4f942f702606e660990c873c9ff5b0395 (diff)
* add new priority parameter to avahi_glib_poll_new()
* beef up AvahiPoll a little to contain real timeout events * cleanups in avahi-client * drop glib dependency * port to AvahiPoll system * put some "const"s and "static"s in to make gcc shut up * change all uses of malloc/free to avahi_malloc/avahi_new/avahi_free git-svn-id: file:///home/lennart/svn/public/avahi/trunk@324 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-common/watch.h')
-rw-r--r--avahi-common/watch.h32
1 files changed, 23 insertions, 9 deletions
diff --git a/avahi-common/watch.h b/avahi-common/watch.h
index 75f53b3..7bab4f8 100644
--- a/avahi-common/watch.h
+++ b/avahi-common/watch.h
@@ -36,6 +36,9 @@ AVAHI_C_DECL_BEGIN
/** An I/O watch object */
typedef struct AvahiWatch AvahiWatch;
+/** An I/O watch object */
+typedef struct AvahiTimeout AvahiTimeout;
+
/** An event polling abstraction object */
typedef struct AvahiPoll AvahiPoll;
@@ -50,8 +53,8 @@ typedef enum {
/** Called whenever an I/O event happens on an I/O watch */
typedef void (*AvahiWatchCallback)(AvahiWatch *w, int fd, AvahiWatchEvent event, void *userdata);
-/** Called when the wakeup time is reached */
-typedef void (*AvahiWakeupCallback)(AvahiPoll *api, void *userdata);
+/** Called when the timeout is reached */
+typedef void (*AvahiTimeoutCallback)(AvahiTimeout *t, void *userdata);
/** Defines an abstracted event polling API. This may be used to
connect Avahi to other main loops. This is losely based on Unix
@@ -60,7 +63,7 @@ typedef void (*AvahiWakeupCallback)(AvahiPoll *api, void *userdata);
to define a single wakeup time.*/
struct AvahiPoll {
- /** Some abstract user data usable by the implementor of the API */
+ /** Some abstract user data usable by the provider of the API */
void* userdata;
/** Create a new watch for the specified file descriptor and for
@@ -68,17 +71,28 @@ struct AvahiPoll {
* whenever any of the events happens. */
AvahiWatch* (*watch_new)(const AvahiPoll *api, int fd, AvahiWatchEvent event, AvahiWatchCallback callback, void *userdata);
- /** Update the events to wait for. */
+ /** Update the events to wait for. It is safe to call this function from an AvahiWatchCallback */
void (*watch_update)(AvahiWatch *w, AvahiWatchEvent event);
- /** Free a watch */
+ /** Return the events that happened. It is safe to call this function from an AvahiWatchCallback */
+ AvahiWatchEvent (*watch_get_events)(AvahiWatch *w);
+
+ /** Free a watch. It is safe to call this function from an AvahiWatchCallback */
void (*watch_free)(AvahiWatch *w);
/** Set a wakeup time for the polling loop. The API will call the
- callback function when the absolute time *tv is reached. If *tv is
- NULL, the callback will be called in the next main loop
- iteration. If callback is NULL the wakeup time is disabled. */
- void (*set_wakeup)(const AvahiPoll *api, const struct timeval *tv, AvahiWakeupCallback callback, void *userdata);
+ callback function when the absolute time *tv is reached. If tv is
+ NULL, the timeout is disabled. After the timeout expired the
+ callback function will be called and the timeout is disabled. You
+ can reenable it by calling timeout_update() */
+ AvahiTimeout* (*timeout_new)(const AvahiPoll *api, const struct timeval *tv, AvahiTimeoutCallback callback, void *userdata);
+
+ /** Update the absolute expiration time for a timeout, If tv is
+ * null, the timeout is disabled. It is safe to call this function from an AvahiTimeoutCallback */
+ void (*timeout_update)(AvahiTimeout *, const struct timeval *tv);
+
+ /** Free a timeout. It is safe to call this function from an AvahiTimeoutCallback */
+ void (*timeout_free)(AvahiTimeout *t);
};
#ifndef DOXYGEN_SHOULD_SKIP_THIS