summaryrefslogtreecommitdiffstats
path: root/src/pulse/browser.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-07-13 17:33:44 +0000
committerLennart Poettering <lennart@poettering.net>2006-07-13 17:33:44 +0000
commit76f93a07f9d683c3484ff3a71857fe30bedcfd46 (patch)
tree84c3bef20b7ed8b2998806e0db3b25c00ddd744a /src/pulse/browser.h
parent3a816205ffde85bcf06c9ff55febc1ba69ce8de9 (diff)
* port libpulse-browse to use the native avahi API instead of the HOWL cruft
* add new function pa_browser_set_error_callback() * add doxygen docs to browser.h git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1069 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/pulse/browser.h')
-rw-r--r--src/pulse/browser.h66
1 files changed, 48 insertions, 18 deletions
diff --git a/src/pulse/browser.h b/src/pulse/browser.h
index 2d20c6c0..fc57a4d5 100644
--- a/src/pulse/browser.h
+++ b/src/pulse/browser.h
@@ -27,42 +27,72 @@
#include <pulse/channelmap.h>
#include <pulse/cdecl.h>
+/** \file
+ * An abstract interface for Zeroconf browsing of PulseAudio servers */
+
PA_C_DECL_BEGIN
+/** An opaque Zeroconf service browser object */
typedef struct pa_browser pa_browser;
+/** Opcodes for pa_browser_cb_t callbacks */
typedef enum pa_browse_opcode {
- PA_BROWSE_NEW_SERVER = 0,
- PA_BROWSE_NEW_SINK,
- PA_BROWSE_NEW_SOURCE,
- PA_BROWSE_REMOVE_SERVER,
- PA_BROWSE_REMOVE_SINK,
- PA_BROWSE_REMOVE_SOURCE
+ PA_BROWSE_NEW_SERVER = 0, /**< New server found */
+ PA_BROWSE_NEW_SINK, /**< New sink found */
+ PA_BROWSE_NEW_SOURCE, /**< New source found */
+ PA_BROWSE_REMOVE_SERVER, /**< Server disappeared */
+ PA_BROWSE_REMOVE_SINK, /**< Sink disappeared */
+ PA_BROWSE_REMOVE_SOURCE /**< Source disappeared */
} pa_browse_opcode_t;
+typedef enum pa_browse_flags {
+ PA_BROWSE_FOR_SERVERS = 1, /**< Browse for servers */
+ PA_BROWSE_FOR_SINKS = 2, /**< Browse for sinks */
+ PA_BROWSE_FOR_SOURCES = 4 /** Browse for sources */
+} pa_browse_flags_t;
+
+/** Create a new browser object on the specified main loop */
pa_browser *pa_browser_new(pa_mainloop_api *mainloop);
+
+/** Same pa_browser_new, but pass additional flags parameter. */
+pa_browser *pa_browser_new_full(pa_mainloop_api *mainloop, pa_browse_flags_t flags, const char **error_string);
+
+/** Increase reference counter of the specified browser object */
pa_browser *pa_browser_ref(pa_browser *z);
+
+/** Decrease reference counter of the specified browser object */
void pa_browser_unref(pa_browser *z);
+/** Information about a sink/source/server found with Zeroconf */
typedef struct pa_browse_info {
- /* Unique service name */
- const char *name; /* always available */
-
- /* Server info */
- const char *server; /* always available */
- const char *server_version, *user_name, *fqdn; /* optional */
- const uint32_t *cookie; /* optional */
-
- /* Device info */
- const char *device; /* always available when this information is of a sink/source */
- const char *description; /* optional */
- const pa_sample_spec *sample_spec; /* optional */
+ const char *name; /**< Unique service name; always available */
+
+ const char *server; /**< Server name; always available */
+ const char *server_version; /**< Server version string; optional */
+ const char *user_name; /**< User name of the server process; optional */
+ const char *fqdn; /* Server version; optional */
+ const uint32_t *cookie; /* Server cookie; optional */
+
+ const char *device; /* Device name; always available when this information is of a sink/source */
+ const char *description; /* Device description; optional */
+ const pa_sample_spec *sample_spec; /* Sample specification of the device; optional */
} pa_browse_info;
+/** Callback prototype */
typedef void (*pa_browse_cb_t)(pa_browser *z, pa_browse_opcode_t c, const pa_browse_info *i, void *userdata);
+/** Set the callback pointer for the browser object */
void pa_browser_set_callback(pa_browser *z, pa_browse_cb_t cb, void *userdata);
+/** Callback prototype for errors */
+typedef void (*pa_browser_error_cb_t)(pa_browser *z, const char *error_string, void *userdata);
+
+/** Set a callback function that is called whenever the browser object
+ * becomes invalid due to an error. After this function has been
+ * called the browser object has become invalid and should be
+ * freed. */
+void pa_browser_set_error_callback(pa_browser *z, pa_browser_error_cb_t, void *userdata);
+
PA_C_DECL_END
#endif