diff options
Diffstat (limited to 'subscribe.h')
-rw-r--r-- | subscribe.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/subscribe.h b/subscribe.h new file mode 100644 index 0000000..75818c7 --- /dev/null +++ b/subscribe.h @@ -0,0 +1,39 @@ +#ifndef foosubscribehfoo +#define foosubscribehfoo + +typedef struct _flxSubscription flxSubscription; + +#include "llist.h" +#include "server.h" + +typedef enum { + FLX_SUBSCRIPTION_NEW, + FLX_SUBSCRIPTION_REMOVE, + FLX_SUBSCRIPTION_CHANGE +} flxSubscriptionEvent; + +typedef void (*flxSubscriptionCallback)(flxSubscription *s, flxRecord *record, gint interface, guchar protocol, flxSubscriptionEvent event, gpointer userdata); + +struct _flxSubscription { + flxServer *server; + flxKey *key; + gint interface; + guchar protocol; + gint n_query; + guint sec_delay; + + flxTimeEvent *time_event; + + flxSubscriptionCallback callback; + gpointer userdata; + + FLX_LLIST_FIELDS(flxSubscription, subscriptions); + FLX_LLIST_FIELDS(flxSubscription, by_key); +}; + +flxSubscription *flx_subscription_new(flxServer *s, flxKey *key, gint interface, guchar protocol, flxSubscriptionCallback callback, gpointer userdata); +void flx_subscription_free(flxSubscription *s); + +void flx_subscription_notify(flxServer *s, flxInterface *i, flxRecord *record, flxSubscriptionEvent event); + +#endif |