]> git.meshlink.io Git - catta/blobdiff - server.h
Rename flx_* to avahi_*
[catta] / server.h
index d050bcc1574682171244de69484dd712019eaf89..ba1af789f2b7b5dbc46446d96dff36372d7634cc 100644 (file)
--- a/server.h
+++ b/server.h
@@ -1,9 +1,7 @@
-#ifndef fooflxserverhfoo
-#define fooflxserverhfoo
+#ifndef fooAvahiserverhfoo
+#define fooAvahiserverhfoo
 
-typedef struct _flxServerEntry flxServerEntry;
-
-#include "flx.h"
+#include "Avahi.h"
 #include "iface.h"
 #include "prioq.h"
 #include "llist.h"
@@ -11,35 +9,53 @@ typedef struct _flxServerEntry flxServerEntry;
 #include "announce.h"
 #include "subscribe.h"
 
-struct _flxServerEntry {
-    flxRecord *record;
-    gint id;
+struct _AvahiEntry {
+    AvahiServer *server;
+    AvahiEntryGroup *group;
+
+    gboolean dead;
+    
+    AvahiEntryFlags flags;
+    AvahiRecord *record;
     gint interface;
     guchar protocol;
 
-    gboolean unique;
+    AVAHI_LLIST_FIELDS(AvahiEntry, entries);
+    AVAHI_LLIST_FIELDS(AvahiEntry, by_key);
+    AVAHI_LLIST_FIELDS(AvahiEntry, by_group);
+    
+    AVAHI_LLIST_HEAD(AvahiAnnouncement, announcements);
+};
+
+struct _AvahiEntryGroup {
+    AvahiServer *server;
+    gboolean dead;
 
-    FLX_LLIST_FIELDS(flxServerEntry, entry);
-    FLX_LLIST_FIELDS(flxServerEntry, by_key);
-    FLX_LLIST_FIELDS(flxServerEntry, by_id);
+    AvahiEntryGroupState state;
+    gpointer userdata;
+    AvahiEntryGroupCallback callback;
+
+    guint n_probing;
     
-    FLX_LLIST_HEAD(flxAnnouncement, announcements);
+    AVAHI_LLIST_FIELDS(AvahiEntryGroup, groups);
+    AVAHI_LLIST_HEAD(AvahiEntry, entries);
 };
 
-struct _flxServer {
+struct _AvahiServer {
     GMainContext *context;
-    flxInterfaceMonitor *monitor;
+    AvahiInterfaceMonitor *monitor;
 
-    gint current_id;
-    
-    FLX_LLIST_HEAD(flxServerEntry, entries);
-    GHashTable *rrset_by_id;
-    GHashTable *rrset_by_key;
+    AVAHI_LLIST_HEAD(AvahiEntry, entries);
+    GHashTable *entries_by_key;
 
-    FLX_LLIST_HEAD(flxSubscription, subscriptions);
+    AVAHI_LLIST_HEAD(AvahiEntryGroup, groups);
+    
+    AVAHI_LLIST_HEAD(AvahiSubscription, subscriptions);
     GHashTable *subscription_hashtable;
 
-    flxTimeEventQueue *time_event_queue;
+    gboolean need_entry_cleanup, need_group_cleanup;
+    
+    AvahiTimeEventQueue *time_event_queue;
     
     gchar *hostname;
 
@@ -47,9 +63,17 @@ struct _flxServer {
 
     GPollFD pollfd_ipv4, pollfd_ipv6;
     GSource *source;
-    
+
+    gboolean ignore_bad_ttl;
 };
 
-gboolean flx_server_entry_match_interface(flxServerEntry *e, flxInterface *i);
+gboolean avahi_server_entry_match_interface(AvahiEntry *e, AvahiInterface *i);
+
+void avahi_server_post_query(AvahiServer *s, gint interface, guchar protocol, AvahiKey *key);
+void avahi_server_post_response(AvahiServer *s, gint interface, guchar protocol, AvahiRecord *record, gboolean flush_cache);
+
+void avahi_entry_group_change_state(AvahiEntryGroup *g, AvahiEntryGroupState state);
+
+gboolean avahi_entry_commited(AvahiEntry *e);
 
 #endif