]> code.delx.au - pulseaudio/blobdiff - src/pulse/browser.h
remove checking for SIGPIPE blocking from client code. Because we use
[pulseaudio] / src / pulse / browser.h
index 2d20c6c0a9dfcfb14c4130e41dfbe5479a86e18d..fc57a4d509c572ee1e820c1adc5a63f544728fe4 100644 (file)
 #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