]> git.meshlink.io Git - catta/blob - subscribe.h
* add subscription feature - with reissuing
[catta] / subscribe.h
1 #ifndef foosubscribehfoo
2 #define foosubscribehfoo
3
4 typedef struct _flxSubscription flxSubscription;
5
6 #include "llist.h"
7 #include "server.h"
8
9 typedef enum {
10     FLX_SUBSCRIPTION_NEW,
11     FLX_SUBSCRIPTION_REMOVE,
12     FLX_SUBSCRIPTION_CHANGE
13 } flxSubscriptionEvent;
14
15 typedef void (*flxSubscriptionCallback)(flxSubscription *s, flxRecord *record, gint interface, guchar protocol, flxSubscriptionEvent event, gpointer userdata);
16
17 struct _flxSubscription {
18     flxServer *server;
19     flxKey *key;
20     gint interface;
21     guchar protocol;
22     gint n_query;
23     guint sec_delay;
24
25     flxTimeEvent *time_event;
26
27     flxSubscriptionCallback callback;
28     gpointer userdata;
29
30     FLX_LLIST_FIELDS(flxSubscription, subscriptions);
31     FLX_LLIST_FIELDS(flxSubscription, by_key);
32 };
33
34 flxSubscription *flx_subscription_new(flxServer *s, flxKey *key, gint interface, guchar protocol, flxSubscriptionCallback callback, gpointer userdata);
35 void flx_subscription_free(flxSubscription *s);
36
37 void flx_subscription_notify(flxServer *s, flxInterface *i, flxRecord *record, flxSubscriptionEvent event);
38
39 #endif