]> git.meshlink.io Git - catta/blobdiff - avahi-client/internal.h
* remove AVAHI_PUBLISH_IS_PROXY, it was a bad idea
[catta] / avahi-client / internal.h
index 4feffc078c5691c997bc6bc0808ea5cf513b8c45..c9c9dc7497f0642cba064c691dca765c9b61d767 100644 (file)
 
 #include <dbus/dbus.h>
 
-struct _AvahiClient
-{
+#include "client.h"
+#include "lookup.h"
+#include "publish.h"
+
+struct AvahiClient {
+    const AvahiPoll *poll_api;
     DBusConnection *bus;
     int error;
+    AvahiClientState state;
+
+    /* Cache for some seldom changing server data */
+    char *version_string, *host_name, *host_name_fqdn, *domain_name;
+    uint32_t local_service_cookie;
+    int local_service_cookie_valid;
+    
     AvahiClientCallback callback;
-    void *user_data;
-    AVAHI_LLIST_HEAD(AvahiClientEntryGroup, groups);
-    AVAHI_LLIST_HEAD(AvahiClientDomainBrowser, domain_browsers);
-    AVAHI_LLIST_HEAD(AvahiClientServiceTypeBrowser, service_type_browsers);
+    void *userdata;
+    
+    AVAHI_LLIST_HEAD(AvahiEntryGroup, groups);
+    AVAHI_LLIST_HEAD(AvahiDomainBrowser, domain_browsers);
+    AVAHI_LLIST_HEAD(AvahiServiceBrowser, service_browsers);
+    AVAHI_LLIST_HEAD(AvahiServiceTypeBrowser, service_type_browsers);
+    AVAHI_LLIST_HEAD(AvahiServiceResolver, service_resolvers);
+    AVAHI_LLIST_HEAD(AvahiHostNameResolver, host_name_resolvers);
+    AVAHI_LLIST_HEAD(AvahiAddressResolver, address_resolvers);
+};
+
+struct AvahiEntryGroup {
+    char *path;
+    AvahiEntryGroupState state;
+    AvahiClient *client;
+    AvahiEntryGroupCallback callback;
+    void *userdata;
+    AVAHI_LLIST_FIELDS(AvahiEntryGroup, groups);
+};
+
+struct AvahiDomainBrowser {
+    char *path;
+    AvahiClient *client;
+    AvahiDomainBrowserCallback callback;
+    void *userdata;
+    AVAHI_LLIST_FIELDS(AvahiDomainBrowser, domain_browsers);
+
+    AvahiIfIndex interface;
+    AvahiProtocol protocol;
 };
 
-struct _AvahiClientEntryGroup {
+struct AvahiServiceBrowser {
     char *path;
     AvahiClient *client;
-    AvahiClientEntryGroupCallback callback;
-    void *user_data;
-    AVAHI_LLIST_FIELDS(AvahiClientEntryGroup, groups);
+    AvahiServiceBrowserCallback callback;
+    void *userdata;
+    AVAHI_LLIST_FIELDS(AvahiServiceBrowser, service_browsers);
+
+    char *type, *domain;
+    AvahiIfIndex interface;
+    AvahiProtocol protocol;
 };
 
-struct _AvahiClientDomainBrowser {
+struct AvahiServiceTypeBrowser {
     char *path;
     AvahiClient *client;
-    AvahiClientDomainBrowserCallback callback;
-    void *user_data;
-    AVAHI_LLIST_FIELDS(AvahiClientDomainBrowser, domain_browsers);
+    AvahiServiceTypeBrowserCallback callback;
+    void *userdata;
+    AVAHI_LLIST_FIELDS(AvahiServiceTypeBrowser, service_type_browsers);
+
+    char *domain;
+    AvahiIfIndex interface;
+    AvahiProtocol protocol;
 };
 
-struct _AvahiClientServiceTypeBrowser {
+struct AvahiServiceResolver {
     char *path;
     AvahiClient *client;
-    AvahiClientServiceTypeBrowserCallback callback;
-    void *user_data;
-    AVAHI_LLIST_FIELDS(AvahiClientServiceTypeBrowser, service_type_browsers);
+    AvahiServiceResolverCallback callback;
+    void *userdata;
+    AVAHI_LLIST_FIELDS(AvahiServiceResolver, service_resolvers);
+
+    char *name, *type, *domain;
+    AvahiIfIndex interface;
+    AvahiProtocol protocol;
+};
+
+struct AvahiHostNameResolver {
+    char *path;
+    AvahiClient *client;
+    AvahiHostNameResolverCallback callback;
+    void *userdata;
+    AVAHI_LLIST_FIELDS(AvahiHostNameResolver, host_name_resolvers);
+
+    char *host_name;
+    AvahiIfIndex interface;
+    AvahiProtocol protocol;
+};
+
+struct AvahiAddressResolver {
+    char *path;
+    AvahiClient *client;
+    AvahiAddressResolverCallback callback;
+    void *userdata;
+    AVAHI_LLIST_FIELDS(AvahiAddressResolver, address_resolvers);
+
+    AvahiAddress address;
+    AvahiIfIndex interface;
+    AvahiProtocol protocol;
 };
 
 int avahi_client_set_errno (AvahiClient *client, int error);
+int avahi_client_set_dbus_error(AvahiClient *client, DBusError *error);
 
-void avahi_entry_group_state_change (AvahiClientEntryGroup *group, int state);
+void avahi_entry_group_set_state(AvahiEntryGroup *group, AvahiEntryGroupState state);
 
 DBusHandlerResult avahi_domain_browser_event (AvahiClient *client, AvahiBrowserEvent event, DBusMessage *message);
-
 DBusHandlerResult avahi_service_type_browser_event (AvahiClient *client, AvahiBrowserEvent event, DBusMessage *message);
+DBusHandlerResult avahi_service_browser_event (AvahiClient *client, AvahiBrowserEvent event, DBusMessage *message);
+
+DBusHandlerResult avahi_service_resolver_event (AvahiClient *client, AvahiResolverEvent event, DBusMessage *message);
+DBusHandlerResult avahi_host_name_resolver_event (AvahiClient *client, AvahiResolverEvent event, DBusMessage *message);
+DBusHandlerResult avahi_address_resolver_event (AvahiClient *client, AvahiResolverEvent event, DBusMessage *message);
+
+int avahi_client_simple_method_call(AvahiClient *client, const char *path, const char *interface, const char *method);
 
 #endif