summaryrefslogtreecommitdiffstats
path: root/subscribe.h
diff options
context:
space:
mode:
Diffstat (limited to 'subscribe.h')
-rw-r--r--subscribe.h39
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