]> git.meshlink.io Git - catta/blob - avahi-daemon/dbus-internal.h
0727b2f14f27a376f369aedbd4ba1b3b08674e81
[catta] / avahi-daemon / dbus-internal.h
1 #ifndef foodbusinternalhfoo
2 #define foodbusinternalhfoo
3
4 /* $Id$ */
5
6 /***
7   This file is part of avahi.
8
9   avahi is free software; you can redistribute it and/or modify it
10   under the terms of the GNU Lesser General Public License as
11   published by the Free Software Foundation; either version 2.1 of the
12   License, or (at your option) any later version.
13
14   avahi is distributed in the hope that it will be useful, but WITHOUT
15   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
17   Public License for more details.
18
19   You should have received a copy of the GNU Lesser General Public
20   License along with avahi; if not, write to the Free Software
21   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22   USA.
23 ***/
24
25
26 #include <dbus/dbus.h>
27
28 #include <avahi-core/core.h>
29 #include <avahi-core/publish.h>
30 #include <avahi-core/lookup.h>
31
32 #include <avahi-common/llist.h>
33
34 typedef struct Server Server;
35 typedef struct Client Client;
36 typedef struct EntryGroupInfo EntryGroupInfo;
37 typedef struct SyncHostNameResolverInfo SyncHostNameResolverInfo;
38 typedef struct AsyncHostNameResolverInfo AsyncHostNameResolverInfo;
39 typedef struct SyncAddressResolverInfo SyncAddressResolverInfo;
40 typedef struct AsyncAddressResolverInfo AsyncAddressResolverInfo;
41 typedef struct DomainBrowserInfo DomainBrowserInfo;
42 typedef struct ServiceTypeBrowserInfo ServiceTypeBrowserInfo;
43 typedef struct ServiceBrowserInfo ServiceBrowserInfo;
44 typedef struct SyncServiceResolverInfo SyncServiceResolverInfo;
45 typedef struct AsyncServiceResolverInfo AsyncServiceResolverInfo;
46 typedef struct RecordBrowserInfo RecordBrowserInfo;
47
48 #define CLIENTS_MAX 256
49 #define OBJECTS_PER_CLIENT_MAX 250
50 #define ENTRIES_PER_ENTRY_GROUP_MAX 20
51
52 struct EntryGroupInfo {
53     unsigned id;
54     Client *client;
55     AvahiSEntryGroup *entry_group;
56     char *path;
57
58     int n_entries;
59
60     AVAHI_LLIST_FIELDS(EntryGroupInfo, entry_groups);
61 };
62
63 struct SyncHostNameResolverInfo {
64     Client *client;
65     AvahiSHostNameResolver *host_name_resolver;
66     DBusMessage *message;
67
68     AVAHI_LLIST_FIELDS(SyncHostNameResolverInfo, sync_host_name_resolvers);
69 };
70
71 struct AsyncHostNameResolverInfo {
72     unsigned id;
73     Client *client;
74     AvahiSHostNameResolver *host_name_resolver;
75     char *path;
76
77     AVAHI_LLIST_FIELDS(AsyncHostNameResolverInfo, async_host_name_resolvers);
78 };
79
80 struct SyncAddressResolverInfo {
81     Client *client;
82     AvahiSAddressResolver *address_resolver;
83     DBusMessage *message;
84
85     AVAHI_LLIST_FIELDS(SyncAddressResolverInfo, sync_address_resolvers);
86 };
87
88 struct AsyncAddressResolverInfo {
89     unsigned id;
90     Client *client;
91     AvahiSAddressResolver *address_resolver;
92     char *path;
93
94     AVAHI_LLIST_FIELDS(AsyncAddressResolverInfo, async_address_resolvers);
95 };
96
97 struct DomainBrowserInfo {
98     unsigned id;
99     Client *client;
100     AvahiSDomainBrowser *domain_browser;
101     char *path;
102
103     AVAHI_LLIST_FIELDS(DomainBrowserInfo, domain_browsers);
104 };
105
106 struct ServiceTypeBrowserInfo {
107     unsigned id;
108     Client *client;
109     AvahiSServiceTypeBrowser *service_type_browser;
110     char *path;
111
112     AVAHI_LLIST_FIELDS(ServiceTypeBrowserInfo, service_type_browsers);
113 };
114
115 struct ServiceBrowserInfo {
116     unsigned id;
117     Client *client;
118     AvahiSServiceBrowser *service_browser;
119     char *path;
120
121     AVAHI_LLIST_FIELDS(ServiceBrowserInfo, service_browsers);
122 };
123
124 struct SyncServiceResolverInfo {
125     Client *client;
126     AvahiSServiceResolver *service_resolver;
127     DBusMessage *message;
128
129     AVAHI_LLIST_FIELDS(SyncServiceResolverInfo, sync_service_resolvers);
130 };
131
132 struct AsyncServiceResolverInfo {
133     unsigned id;
134     Client *client;
135     AvahiSServiceResolver *service_resolver;
136     char *path;
137
138     AVAHI_LLIST_FIELDS(AsyncServiceResolverInfo, async_service_resolvers);
139 };
140
141 struct RecordBrowserInfo {
142     unsigned id;
143     Client *client;
144     AvahiSRecordBrowser *record_browser;
145     char *path;
146
147     AVAHI_LLIST_FIELDS(RecordBrowserInfo, record_browsers);
148 };
149
150 struct Client {
151     unsigned id;
152     char *name;
153     unsigned current_id;
154     int n_objects;
155
156     AVAHI_LLIST_FIELDS(Client, clients);
157     AVAHI_LLIST_HEAD(EntryGroupInfo, entry_groups);
158     AVAHI_LLIST_HEAD(SyncHostNameResolverInfo, sync_host_name_resolvers);
159     AVAHI_LLIST_HEAD(AsyncHostNameResolverInfo, async_host_name_resolvers);
160     AVAHI_LLIST_HEAD(SyncAddressResolverInfo, sync_address_resolvers);
161     AVAHI_LLIST_HEAD(AsyncAddressResolverInfo, async_address_resolvers);
162     AVAHI_LLIST_HEAD(DomainBrowserInfo, domain_browsers);
163     AVAHI_LLIST_HEAD(ServiceTypeBrowserInfo, service_type_browsers);
164     AVAHI_LLIST_HEAD(ServiceBrowserInfo, service_browsers);
165     AVAHI_LLIST_HEAD(SyncServiceResolverInfo, sync_service_resolvers);
166     AVAHI_LLIST_HEAD(AsyncServiceResolverInfo, async_service_resolvers);
167     AVAHI_LLIST_HEAD(RecordBrowserInfo, record_browsers);
168 };
169
170 struct Server {
171     const AvahiPoll *poll_api;
172     DBusConnection *bus;
173     AVAHI_LLIST_HEAD(Client, clients);
174     int n_clients;
175     unsigned current_id;
176
177     AvahiTimeout *reconnect_timeout;
178     int reconnect;
179 };
180
181 extern Server *server;
182
183 void avahi_dbus_entry_group_free(EntryGroupInfo *i);
184 void avahi_dbus_entry_group_callback(AvahiServer *s, AvahiSEntryGroup *g, AvahiEntryGroupState state, void* userdata);
185 DBusHandlerResult avahi_dbus_msg_entry_group_impl(DBusConnection *c, DBusMessage *m, void *userdata);
186
187 void avahi_dbus_sync_host_name_resolver_free(SyncHostNameResolverInfo *i);
188 void avahi_dbus_sync_host_name_resolver_callback(AvahiSHostNameResolver *r, AvahiIfIndex interface, AvahiProtocol protocol, AvahiResolverEvent event, const char *host_name, const AvahiAddress *a, AvahiLookupResultFlags flags, void* userdata);
189
190 void avahi_dbus_async_host_name_resolver_free(AsyncHostNameResolverInfo *i);
191 void avahi_dbus_async_host_name_resolver_callback(AvahiSHostNameResolver *r, AvahiIfIndex interface, AvahiProtocol protocol, AvahiResolverEvent event, const char *host_name, const AvahiAddress *a, AvahiLookupResultFlags flags, void* userdata);
192 DBusHandlerResult avahi_dbus_msg_async_host_name_resolver_impl(DBusConnection *c, DBusMessage *m, void *userdata);
193
194 void avahi_dbus_sync_address_resolver_free(SyncAddressResolverInfo *i);
195 void avahi_dbus_sync_address_resolver_callback(AvahiSAddressResolver *r, AvahiIfIndex interface, AvahiProtocol protocol, AvahiResolverEvent event, const AvahiAddress *address, const char *host_name, AvahiLookupResultFlags flags, void* userdata);
196
197 void avahi_dbus_async_address_resolver_free(AsyncAddressResolverInfo *i);
198 void avahi_dbus_async_address_resolver_callback(AvahiSAddressResolver *r, AvahiIfIndex interface, AvahiProtocol protocol, AvahiResolverEvent event, const AvahiAddress *address, const char *host_name, AvahiLookupResultFlags flags, void* userdata);
199 DBusHandlerResult avahi_dbus_msg_async_address_resolver_impl(DBusConnection *c, DBusMessage *m, void *userdata);
200
201 void avahi_dbus_domain_browser_free(DomainBrowserInfo *i);
202 DBusHandlerResult avahi_dbus_msg_domain_browser_impl(DBusConnection *c, DBusMessage *m, void *userdata);
203 void avahi_dbus_domain_browser_callback(AvahiSDomainBrowser *b, AvahiIfIndex interface, AvahiProtocol protocol, AvahiBrowserEvent event, const char *domain, AvahiLookupResultFlags flags,  void* userdata);
204
205 void avahi_dbus_service_type_browser_free(ServiceTypeBrowserInfo *i);
206 DBusHandlerResult avahi_dbus_msg_service_type_browser_impl(DBusConnection *c, DBusMessage *m, void *userdata);
207 void avahi_dbus_service_type_browser_callback(AvahiSServiceTypeBrowser *b, AvahiIfIndex interface, AvahiProtocol protocol, AvahiBrowserEvent event, const char *type, const char *domain, AvahiLookupResultFlags flags, void* userdata);
208
209 void avahi_dbus_service_browser_free(ServiceBrowserInfo *i);
210 DBusHandlerResult avahi_dbus_msg_service_browser_impl(DBusConnection *c, DBusMessage *m, void *userdata);
211 void avahi_dbus_service_browser_callback(AvahiSServiceBrowser *b, AvahiIfIndex interface, AvahiProtocol protocol, AvahiBrowserEvent event, const char *name, const char *type, const char *domain, AvahiLookupResultFlags flags, void* userdata);
212
213 void avahi_dbus_sync_service_resolver_free(SyncServiceResolverInfo *i);
214
215 void avahi_dbus_sync_service_resolver_callback(
216     AvahiSServiceResolver *r,
217     AvahiIfIndex interface,
218     AvahiProtocol protocol,
219     AvahiResolverEvent event,
220     const char *name,
221     const char *type,
222     const char *domain,
223     const char *host_name,
224     const AvahiAddress *a,
225     uint16_t port,
226     AvahiStringList *txt,
227     AvahiLookupResultFlags flags,
228     void* userdata);
229
230 void avahi_dbus_async_service_resolver_free(AsyncServiceResolverInfo *i);
231 void avahi_dbus_async_service_resolver_callback(
232     AvahiSServiceResolver *r,
233     AvahiIfIndex interface,
234     AvahiProtocol protocol,
235     AvahiResolverEvent event,
236     const char *name,
237     const char *type,
238     const char *domain,
239     const char *host_name,
240     const AvahiAddress *a,
241     uint16_t port,
242     AvahiStringList *txt,
243     AvahiLookupResultFlags flags,
244     void* userdata);
245
246 DBusHandlerResult avahi_dbus_msg_async_service_resolver_impl(DBusConnection *c, DBusMessage *m, void *userdata);
247
248 void avahi_dbus_record_browser_free(RecordBrowserInfo *i);
249 DBusHandlerResult avahi_dbus_msg_record_browser_impl(DBusConnection *c, DBusMessage *m, void *userdata);
250 void avahi_dbus_record_browser_callback(AvahiSRecordBrowser *b, AvahiIfIndex interface, AvahiProtocol protocol, AvahiBrowserEvent event, AvahiRecord *record, AvahiLookupResultFlags flags, void* userdata);
251
252 #endif