X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-client%2Finternal.h;h=7a79dd7337628c34bdc73f2c5ceca21cfffb7ec8;hb=1463c6f70a4755ddbf447c00aacb78c66852424e;hp=72c01de934dde2d56074f2a96d9f1770a7639219;hpb=fde1c3d1a0156f0e06a819cc0958ec077a88c8c6;p=catta diff --git a/avahi-client/internal.h b/avahi-client/internal.h index 72c01de..7a79dd7 100644 --- a/avahi-client/internal.h +++ b/avahi-client/internal.h @@ -22,38 +22,152 @@ USA. ***/ -#ifdef HAVE_CONFIG_H -#include -#endif +#include + +#include "client.h" +#include "lookup.h" +#include "publish.h" -struct _AvahiClient -{ +struct AvahiClient { + const AvahiPoll *poll_api; DBusConnection *bus; - int errno; + int error; + AvahiClientState state; + AvahiClientFlags flags; + + /* 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; + 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); + AVAHI_LLIST_HEAD(AvahiRecordBrowser, record_browsers); }; -struct _AvahiEntryGroup { +struct AvahiEntryGroup { char *path; + AvahiEntryGroupState state; AvahiClient *client; AvahiEntryGroupCallback callback; - void *user_data; + void *userdata; AVAHI_LLIST_FIELDS(AvahiEntryGroup, groups); }; -struct _AvahiDomainBrowser { +struct AvahiDomainBrowser { + int ref; + char *path; AvahiClient *client; AvahiDomainBrowserCallback callback; - void *user_data; + void *userdata; AVAHI_LLIST_FIELDS(AvahiDomainBrowser, domain_browsers); + + AvahiIfIndex interface; + AvahiProtocol protocol; + + AvahiTimeout *defer_timeout; + + AvahiStringList *static_browse_domains; +}; + +struct AvahiServiceBrowser { + char *path; + AvahiClient *client; + AvahiServiceBrowserCallback callback; + void *userdata; + AVAHI_LLIST_FIELDS(AvahiServiceBrowser, service_browsers); + + char *type, *domain; + AvahiIfIndex interface; + AvahiProtocol protocol; +}; + +struct AvahiServiceTypeBrowser { + char *path; + AvahiClient *client; + AvahiServiceTypeBrowserCallback callback; + void *userdata; + AVAHI_LLIST_FIELDS(AvahiServiceTypeBrowser, service_type_browsers); + + char *domain; + AvahiIfIndex interface; + AvahiProtocol protocol; +}; + +struct AvahiServiceResolver { + char *path; + AvahiClient *client; + 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; +}; + +struct AvahiRecordBrowser { + char *path; + AvahiClient *client; + AvahiRecordBrowserCallback callback; + void *userdata; + AVAHI_LLIST_FIELDS(AvahiRecordBrowser, record_browsers); + + char *name; + uint16_t clazz, type; + AvahiIfIndex interface; + AvahiProtocol protocol; }; -int avahi_client_set_errno (AvahiClient *client, int errno); +int avahi_client_set_errno (AvahiClient *client, int error); +int avahi_client_set_dbus_error(AvahiClient *client, DBusError *error); + +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_record_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); -void avahi_entry_group_state_change (AvahiEntryGroup *group, int state); +int avahi_client_is_connected(AvahiClient *client); #endif