]> code.delx.au - pulseaudio/commitdiff
http: export information about currently active server strings
authorLennart Poettering <lennart@poettering.net>
Wed, 29 Apr 2009 23:35:18 +0000 (01:35 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 29 Apr 2009 23:35:18 +0000 (01:35 +0200)
src/modules/module-protocol-stub.c
src/pulsecore/protocol-http.c
src/pulsecore/protocol-http.h

index ce3dcd037b176235caaac48636f71d4cc9f969dc..5b351d19ab893834c4ba2659f75a69254d983412 100644 (file)
@@ -251,7 +251,7 @@ int pa__init(pa_module*m) {
     int r;
 #endif
 
-#if defined(USE_PROTOCOL_NATIVE)
+#if defined(USE_PROTOCOL_NATIVE) || defined(USE_PROTOCOL_HTTP)
     char t[256];
 #endif
 
@@ -382,6 +382,24 @@ int pa__init(pa_module*m) {
 #  endif
 #endif
 
+#if defined(USE_PROTOCOL_HTTP)
+#if defined(USE_TCP_SOCKETS)
+    if (u->socket_server_ipv4)
+        if (pa_socket_server_get_address(u->socket_server_ipv4, t, sizeof(t)))
+            pa_http_protocol_add_server_string(u->http_protocol, t);
+
+#ifdef HAVE_IPV6
+    if (u->socket_server_ipv6)
+        if (pa_socket_server_get_address(u->socket_server_ipv6, t, sizeof(t)))
+            pa_http_protocol_add_server_string(u->http_protocol, t);
+#endif /* HAVE_IPV6 */
+#else /* USE_TCP_SOCKETS */
+    if (pa_socket_server_get_address(u->socket_server_unix, t, sizeof(t)))
+        pa_http_protocol_add_server_string(u->http_protocol, t);
+
+#endif /* USE_TCP_SOCKETS */
+#endif /* USE_PROTOCOL_HTTP */
+
     if (ma)
         pa_modargs_free(ma);
 
@@ -419,6 +437,24 @@ void pa__done(pa_module*m) {
     }
 #elif defined(USE_PROTOCOL_HTTP)
     if (u->http_protocol) {
+        char t[256];
+
+#if defined(USE_TCP_SOCKETS)
+        if (u->socket_server_ipv4)
+            if (pa_socket_server_get_address(u->socket_server_ipv4, t, sizeof(t)))
+                pa_http_protocol_remove_server_string(u->http_protocol, t);
+
+#ifdef HAVE_IPV6
+        if (u->socket_server_ipv6)
+            if (pa_socket_server_get_address(u->socket_server_ipv6, t, sizeof(t)))
+                pa_http_protocol_remove_server_string(u->http_protocol, t);
+#endif /* HAVE_IPV6 */
+#else /* USE_TCP_SOCKETS */
+        if (u->socket_server_unix)
+            if (pa_socket_server_get_address(u->socket_server_unix, t, sizeof(t)))
+                pa_http_protocol_remove_server_string(u->http_protocol, t);
+#endif /* USE_PROTOCOL_HTTP */
+
         pa_http_protocol_disconnect(u->http_protocol, u->module);
         pa_http_protocol_unref(u->http_protocol);
     }
index 46850b2870b4aba11c5eef2688d5e3b527be37b8..b5d75301f1d6611f6eff7fed93a8849a7cb33a15 100644 (file)
@@ -97,6 +97,8 @@ struct pa_http_protocol {
 
     pa_core *core;
     pa_idxset *connections;
+
+    pa_strlist *servers;
 };
 
 enum {
@@ -698,7 +700,7 @@ static pa_http_protocol* http_protocol_new(pa_core *c) {
 
     pa_assert(c);
 
-    p = pa_xnew(pa_http_protocol, 1);
+    p = pa_xnew0(pa_http_protocol, 1);
     PA_REFCNT_INIT(p);
     p->core = c;
     p->connections = pa_idxset_new(NULL, NULL);
@@ -740,7 +742,32 @@ void pa_http_protocol_unref(pa_http_protocol *p) {
 
     pa_idxset_free(p->connections, NULL, NULL);
 
+    pa_strlist_free(p->servers);
+
     pa_assert_se(pa_shared_remove(p->core, "http-protocol") >= 0);
 
     pa_xfree(p);
 }
+
+void pa_http_protocol_add_server_string(pa_http_protocol *p, const char *name) {
+    pa_assert(p);
+    pa_assert(PA_REFCNT_VALUE(p) >= 1);
+    pa_assert(name);
+
+    p->servers = pa_strlist_prepend(p->servers, name);
+}
+
+void pa_http_protocol_remove_server_string(pa_http_protocol *p, const char *name) {
+    pa_assert(p);
+    pa_assert(PA_REFCNT_VALUE(p) >= 1);
+    pa_assert(name);
+
+    p->servers = pa_strlist_remove(p->servers, name);
+}
+
+pa_strlist *pa_http_protocol_servers(pa_http_protocol *p) {
+    pa_assert(p);
+    pa_assert(PA_REFCNT_VALUE(p) >= 1);
+
+    return p->servers;
+}
index 40b3d82c4edd92125ca40ea387cb5338f0999eb5..f7517e8139b7966f5a589d9e2ba032fc2343a455 100644 (file)
@@ -26,7 +26,7 @@
 #include <pulsecore/module.h>
 #include <pulsecore/modargs.h>
 #include <pulsecore/iochannel.h>
-
+#include <pulsecore/strlist.h>
 
 typedef struct pa_http_protocol pa_http_protocol;
 
@@ -36,4 +36,8 @@ void pa_http_protocol_unref(pa_http_protocol *p);
 void pa_http_protocol_connect(pa_http_protocol *p, pa_iochannel *io, pa_module *m);
 void pa_http_protocol_disconnect(pa_http_protocol *p, pa_module *m);
 
+void pa_http_protocol_add_server_string(pa_http_protocol *p, const char *name);
+void pa_http_protocol_remove_server_string(pa_http_protocol *p, const char *name);
+pa_strlist *pa_http_protocol_servers(pa_http_protocol *p);
+
 #endif