]> git.meshlink.io Git - catta/blobdiff - announce.h
* s/status/state/g
[catta] / announce.h
index 0e65eae6b1668f0b4ffe79b39c704040802c7262..c7094fb9a242bb85e84d4ce05a691c5fc5ef933f 100644 (file)
@@ -10,24 +10,42 @@ typedef struct _flxAnnouncement flxAnnouncement;
 #include "server.h"
 #include "timeeventq.h"
 
+typedef enum {
+    FLX_PROBING,
+    FLX_WAITING,         /* wait for other records in group */
+    FLX_ANNOUNCING,
+    FLX_ESTABLISHED
+} flxAnnouncementState;
+
 struct _flxAnnouncement {
     flxServer *server;
     flxInterface *interface;
-    flxServerEntry *entry;
-    
+    flxEntry *entry;
+
     flxTimeEvent *time_event;
-    guint n_announced;
+
+    flxAnnouncementState state;
+    guint n_iteration;
+    guint sec_delay;
 
     FLX_LLIST_FIELDS(flxAnnouncement, by_interface);
     FLX_LLIST_FIELDS(flxAnnouncement, by_entry);
 };
 
 void flx_announce_interface(flxServer *s, flxInterface *i);
-void flx_announce_entry(flxServer *s, flxServerEntry *e);
+void flx_announce_entry(flxServer *s, flxEntry *e);
+void flx_announce_group(flxServer *s, flxEntryGroup *g);
+
+void flx_entry_group_check_probed(flxEntryGroup *g, gboolean immediately);
+
+gboolean flx_entry_registered(flxServer *s, flxEntry *e, flxInterface *i);
+gboolean flx_entry_registering(flxServer *s, flxEntry *e, flxInterface *i);
 
 void flx_goodbye_interface(flxServer *s, flxInterface *i, gboolean send);
-void flx_goodbye_entry(flxServer *s, flxServerEntry *e, gboolean send);
+void flx_goodbye_entry(flxServer *s, flxEntry *e, gboolean send);
 
 void flx_goodbye_all(flxServer *s, gboolean send);
 
+flxAnnouncement *flx_get_announcement(flxServer *s, flxEntry *e, flxInterface *i);
+
 #endif