]> git.meshlink.io Git - catta/blob - announce.h
fix two memory leaks
[catta] / announce.h
1 #ifndef fooannouncehfoo
2 #define fooannouncehfoo
3
4 #include <glib.h>
5
6 typedef struct _flxAnnouncement flxAnnouncement;
7
8 #include "llist.h"
9 #include "iface.h"
10 #include "server.h"
11 #include "timeeventq.h"
12
13 typedef enum {
14     FLX_PROBING,
15     FLX_WAITING,         /* wait for other records in group */
16     FLX_ANNOUNCING,
17     FLX_ESTABLISHED
18 } flxAnnouncementState;
19
20 struct _flxAnnouncement {
21     flxServer *server;
22     flxInterface *interface;
23     flxEntry *entry;
24
25     flxTimeEvent *time_event;
26
27     flxAnnouncementState state;
28     guint n_iteration;
29     guint sec_delay;
30
31     FLX_LLIST_FIELDS(flxAnnouncement, by_interface);
32     FLX_LLIST_FIELDS(flxAnnouncement, by_entry);
33 };
34
35 void flx_announce_interface(flxServer *s, flxInterface *i);
36 void flx_announce_entry(flxServer *s, flxEntry *e);
37 void flx_announce_group(flxServer *s, flxEntryGroup *g);
38
39 void flx_entry_group_check_probed(flxEntryGroup *g, gboolean immediately);
40
41 gboolean flx_entry_registered(flxServer *s, flxEntry *e, flxInterface *i);
42 gboolean flx_entry_registering(flxServer *s, flxEntry *e, flxInterface *i);
43
44 void flx_goodbye_interface(flxServer *s, flxInterface *i, gboolean send);
45 void flx_goodbye_entry(flxServer *s, flxEntry *e, gboolean send);
46
47 void flx_goodbye_all(flxServer *s, gboolean send);
48
49 flxAnnouncement *flx_get_announcement(flxServer *s, flxEntry *e, flxInterface *i);
50
51 #endif