#include <avahi-common/timeval.h>
#include <avahi-common/malloc.h>
+#include <avahi-common/error.h>
#include "browse.h"
#include "log.h"
-struct AvahiRecordBrowser {
+struct AvahiSRecordBrowser {
int dead;
AvahiServer *server;
AvahiTimeEvent *query_time_event;
AvahiTimeEvent *scan_time_event;
- AvahiRecordBrowserCallback callback;
+ AvahiSRecordBrowserCallback callback;
void* userdata;
- AVAHI_LLIST_FIELDS(AvahiRecordBrowser, browser);
- AVAHI_LLIST_FIELDS(AvahiRecordBrowser, by_key);
+ AVAHI_LLIST_FIELDS(AvahiSRecordBrowser, browser);
+ AVAHI_LLIST_FIELDS(AvahiSRecordBrowser, by_key);
};
static void elapse_callback(AvahiTimeEvent *e, void *userdata) {
- AvahiRecordBrowser *s = userdata;
+ AvahiSRecordBrowser *s = userdata;
struct timeval tv;
/* char *t; */
}
struct cbdata {
- AvahiRecordBrowser *record_browser;
+ AvahiSRecordBrowser *record_browser;
AvahiInterface *interface;
};
}
static void scan_interface_callback(AvahiInterfaceMonitor *m, AvahiInterface *i, void* userdata) {
- AvahiRecordBrowser *b = userdata;
- struct cbdata cbdata = { b, i };
+ AvahiSRecordBrowser *b = userdata;
+ struct cbdata cbdata;
+
+ cbdata.record_browser = b;
+ cbdata.interface = i;
assert(m);
assert(i);
}
static void scan_callback(AvahiTimeEvent *e, void *userdata) {
- AvahiRecordBrowser *b = userdata;
+ AvahiSRecordBrowser *b = userdata;
assert(b);
/* Scan the caches */
}
}
-AvahiRecordBrowser *avahi_record_browser_new(AvahiServer *server, AvahiIfIndex interface, AvahiProtocol protocol, AvahiKey *key, AvahiRecordBrowserCallback callback, void* userdata) {
- AvahiRecordBrowser *b, *t;
+AvahiSRecordBrowser *avahi_s_record_browser_new(AvahiServer *server, AvahiIfIndex interface, AvahiProtocol protocol, AvahiKey *key, AvahiSRecordBrowserCallback callback, void* userdata) {
+ AvahiSRecordBrowser *b, *t;
struct timeval tv;
assert(server);
return NULL;
}
- if (!(b = avahi_new(AvahiRecordBrowser, 1))) {
+ if (!(b = avahi_new(AvahiSRecordBrowser, 1))) {
avahi_server_set_errno(server, AVAHI_ERR_NO_MEMORY);
return NULL;
}
avahi_elapse_time(&tv, b->sec_delay*1000, 0);
b->query_time_event = avahi_time_event_new(server->time_event_queue, &tv, elapse_callback, b);
- AVAHI_LLIST_PREPEND(AvahiRecordBrowser, browser, server->record_browsers, b);
+ AVAHI_LLIST_PREPEND(AvahiSRecordBrowser, browser, server->record_browsers, b);
/* Add the new entry to the record_browser hash table */
t = avahi_hashmap_lookup(server->record_browser_hashmap, key);
- AVAHI_LLIST_PREPEND(AvahiRecordBrowser, by_key, t, b);
+ AVAHI_LLIST_PREPEND(AvahiSRecordBrowser, by_key, t, b);
avahi_hashmap_replace(server->record_browser_hashmap, key, t);
/* The currenlty cached entries are scanned a bit later */
return b;
}
-void avahi_record_browser_free(AvahiRecordBrowser *b) {
+void avahi_s_record_browser_free(AvahiSRecordBrowser *b) {
assert(b);
assert(!b->dead);
}
}
-void avahi_record_browser_destroy(AvahiRecordBrowser *b) {
- AvahiRecordBrowser *t;
+void avahi_s_record_browser_destroy(AvahiSRecordBrowser *b) {
+ AvahiSRecordBrowser *t;
assert(b);
- AVAHI_LLIST_REMOVE(AvahiRecordBrowser, browser, b->server->record_browsers, b);
+ AVAHI_LLIST_REMOVE(AvahiSRecordBrowser, browser, b->server->record_browsers, b);
t = avahi_hashmap_lookup(b->server->record_browser_hashmap, b->key);
- AVAHI_LLIST_REMOVE(AvahiRecordBrowser, by_key, t, b);
+ AVAHI_LLIST_REMOVE(AvahiSRecordBrowser, by_key, t, b);
if (t)
avahi_hashmap_replace(b->server->record_browser_hashmap, t->key, t);
else
}
void avahi_browser_cleanup(AvahiServer *server) {
- AvahiRecordBrowser *b;
- AvahiRecordBrowser *n;
+ AvahiSRecordBrowser *b;
+ AvahiSRecordBrowser *n;
assert(server);
n = b->browser_next;
if (b->dead)
- avahi_record_browser_destroy(b);
+ avahi_s_record_browser_destroy(b);
}
server->need_browser_cleanup = 0;
}
void avahi_browser_notify(AvahiServer *server, AvahiInterface *i, AvahiRecord *record, AvahiBrowserEvent event) {
- AvahiRecordBrowser *b;
+ AvahiSRecordBrowser *b;
assert(server);
assert(record);
}
int avahi_is_subscribed(AvahiServer *server, AvahiInterface *i, AvahiKey *k) {
- AvahiRecordBrowser *b;
+ AvahiSRecordBrowser *b;
assert(server);
assert(k);
}
void avahi_browser_new_interface(AvahiServer*s, AvahiInterface *i) {
- AvahiRecordBrowser *b;
+ AvahiSRecordBrowser *b;
assert(s);
assert(i);