#ifndef foointernalhfoo #define foointernalhfoo /* $Id$ */ /*** This file is part of avahi. avahi is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. avahi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with avahi; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. ***/ #include #include "client.h" #include "lookup.h" #include "publish.h" struct AvahiClient { const AvahiPoll *poll_api; DBusConnection *bus; 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 *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 { char *path; AvahiEntryGroupState state; int state_valid; AvahiClient *client; AvahiEntryGroupCallback callback; void *userdata; AVAHI_LLIST_FIELDS(AvahiEntryGroup, groups); }; struct AvahiDomainBrowser { int ref; char *path; AvahiClient *client; AvahiDomainBrowserCallback callback; 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 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); int avahi_client_is_connected(AvahiClient *client); #endif