summaryrefslogtreecommitdiffstats
path: root/avahi-core
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-05-22 14:40:39 +0000
committerLennart Poettering <lennart@poettering.net>2005-05-22 14:40:39 +0000
commit630a3e58e8fbed70d2e5aa7a3cf07067954b3cd3 (patch)
treec8c39d6dcb9ef6cb5bd8f21af7a61266db4d63b2 /avahi-core
parent4247c03f559776793fcc4f28706d3bf0bced57b9 (diff)
* add service type browser
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@85 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-core')
-rw-r--r--avahi-core/Makefile.am3
-rw-r--r--avahi-core/avahi-test.c17
-rw-r--r--avahi-core/core.h8
-rw-r--r--avahi-core/server.c3
-rw-r--r--avahi-core/server.h1
5 files changed, 26 insertions, 6 deletions
diff --git a/avahi-core/Makefile.am b/avahi-core/Makefile.am
index 95eeea7..39d7844 100644
--- a/avahi-core/Makefile.am
+++ b/avahi-core/Makefile.am
@@ -60,7 +60,8 @@ libavahi_core_la_SOURCES = \
alternative.c alternative.h \
resolve-host-name.c \
resolve-address.c \
- browse-domain.c
+ browse-domain.c \
+ browse-service-type.c
prioq_test_SOURCES = \
prioq-test.c \
diff --git a/avahi-core/avahi-test.c b/avahi-core/avahi-test.c
index 45a37f2..5603481 100644
--- a/avahi-core/avahi-test.c
+++ b/avahi-core/avahi-test.c
@@ -144,6 +144,11 @@ static void db_callback(AvahiDomainBrowser *b, gint iface, guchar protocol, Avah
g_message("DB: (%i.%i) %s [%s]", iface, protocol, domain, event == AVAHI_BROWSER_NEW ? "new" : "remove");
}
+static void stb_callback(AvahiServiceTypeBrowser *b, gint iface, guchar protocol, AvahiBrowserEvent event, const gchar *service_type, const gchar *domain, gpointer userdata) {
+
+ g_message("STB: (%i.%i) %s in %s [%s]", iface, protocol, service_type, domain, event == AVAHI_BROWSER_NEW ? "new" : "remove");
+}
+
int main(int argc, char *argv[]) {
GMainLoop *loop = NULL;
AvahiRecordBrowser *r;
@@ -153,6 +158,7 @@ int main(int argc, char *argv[]) {
AvahiServerConfig config;
AvahiAddress a;
AvahiDomainBrowser *db;
+ AvahiServiceTypeBrowser *stb;
avahi_server_config_init(&config);
/* config.host_name = g_strdup("test"); */
@@ -160,14 +166,16 @@ int main(int argc, char *argv[]) {
avahi_server_config_free(&config);
k = avahi_key_new("_http._tcp.local", AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_PTR);
- r = avahi_record_browser_new(server, 0, AF_UNSPEC, k, record_browser_callback, NULL);
+ r = avahi_record_browser_new(server, -1, AF_UNSPEC, k, record_browser_callback, NULL);
avahi_key_unref(k);
- hnr = avahi_host_name_resolver_new(server, 0, AF_UNSPEC, "codes-CompUTER.local", AF_UNSPEC, hnr_callback, NULL);
+ hnr = avahi_host_name_resolver_new(server, -1, AF_UNSPEC, "codes-CompUTER.local", AF_UNSPEC, hnr_callback, NULL);
+
+ ar = avahi_address_resolver_new(server, -1, AF_UNSPEC, avahi_address_parse("192.168.50.15", AF_INET, &a), ar_callback, NULL);
- ar = avahi_address_resolver_new(server, 0, AF_UNSPEC, avahi_address_parse("192.168.50.15", AF_INET, &a), ar_callback, NULL);
+ db = avahi_domain_browser_new(server, -1, AF_UNSPEC, NULL, AVAHI_DOMAIN_BROWSER_BROWSE, db_callback, NULL);
- db = avahi_domain_browser_new(server, 0, AF_UNSPEC, NULL, AVAHI_DOMAIN_BROWSER_BROWSE, db_callback, NULL);
+ stb = avahi_service_type_browser_new(server, -1, AF_UNSPEC, NULL, stb_callback, NULL);
loop = g_main_loop_new(NULL, FALSE);
@@ -180,6 +188,7 @@ int main(int argc, char *argv[]) {
avahi_record_browser_free(r);
avahi_host_name_resolver_free(hnr);
avahi_address_resolver_free(ar);
+ avahi_service_type_browser_free(stb);
if (group)
avahi_entry_group_free(group);
diff --git a/avahi-core/core.h b/avahi-core/core.h
index 4f981e0..2c3dafd 100644
--- a/avahi-core/core.h
+++ b/avahi-core/core.h
@@ -244,8 +244,14 @@ typedef void (*AvahiDomainBrowserCallback)(AvahiDomainBrowser *b, gint interface
AvahiDomainBrowser *avahi_domain_browser_new(AvahiServer *server, gint interface, guchar protocol, const gchar *domain, AvahiDomainBrowserType type, AvahiDomainBrowserCallback callback, gpointer userdata);
void avahi_domain_browser_free(AvahiDomainBrowser *b);
-/* not yet implemented */
typedef struct AvahiServiceTypeBrowser AvahiServiceTypeBrowser;
+typedef void (*AvahiServiceTypeBrowserCallback)(AvahiServiceTypeBrowser *b, gint interface, guchar protocol, AvahiBrowserEvent event, const gchar *type, const gchar *domain, gpointer userdata);
+AvahiServiceTypeBrowser *avahi_service_type_browser_new(AvahiServer *server, gint interface, guchar protocol, const gchar *domain, AvahiServiceTypeBrowserCallback callback, gpointer userdata);
+void avahi_service_type_browser_free(AvahiServiceTypeBrowser *b);
+
+
+/* Not yet implemented */
+
typedef struct AvahiServiceBrowser AvahiServiceBrowser;
typedef struct AvahiServiceResolver AvahiServiceResolver;
diff --git a/avahi-core/server.c b/avahi-core/server.c
index b00e4ee..83bec15 100644
--- a/avahi-core/server.c
+++ b/avahi-core/server.c
@@ -965,6 +965,7 @@ AvahiServer *avahi_server_new(GMainContext *c, const AvahiServerConfig *sc, Avah
AVAHI_LLIST_HEAD_INIT(AvahiHostNameResolver, s->host_name_resolvers);
AVAHI_LLIST_HEAD_INIT(AvahiAddressResolver, s->address_resolvers);
AVAHI_LLIST_HEAD_INIT(AvahiDomainBrowser, s->domain_browsers);
+ AVAHI_LLIST_HEAD_INIT(AvahiServiceTypeBrowser, s->service_type_browsers);
/* Get host name */
s->host_name = s->config.host_name ? avahi_normalize_name(s->config.host_name) : avahi_get_host_name();
@@ -1009,6 +1010,8 @@ void avahi_server_free(AvahiServer* s) {
avahi_address_resolver_free(s->address_resolvers);
while (s->domain_browsers)
avahi_domain_browser_free(s->domain_browsers);
+ while (s->service_type_browsers)
+ avahi_service_type_browser_free(s->service_type_browsers);
while (s->record_browsers)
avahi_record_browser_destroy(s->record_browsers);
g_hash_table_destroy(s->record_browser_hashtable);
diff --git a/avahi-core/server.h b/avahi-core/server.h
index 4726174..60737ce 100644
--- a/avahi-core/server.h
+++ b/avahi-core/server.h
@@ -80,6 +80,7 @@ struct AvahiServer {
AVAHI_LLIST_HEAD(AvahiHostNameResolver, host_name_resolvers);
AVAHI_LLIST_HEAD(AvahiAddressResolver, address_resolvers);
AVAHI_LLIST_HEAD(AvahiDomainBrowser, domain_browsers);
+ AVAHI_LLIST_HEAD(AvahiServiceTypeBrowser, service_type_browsers);
gboolean need_entry_cleanup, need_group_cleanup, need_browser_cleanup;