http: export information about currently active server strings

This commit is contained in:
Lennart Poettering 2009-04-30 01:35:18 +02:00
parent 23a798caf6
commit 8dfdfd4e1b
3 changed files with 70 additions and 3 deletions

View file

@ -251,7 +251,7 @@ int pa__init(pa_module*m) {
int r; int r;
#endif #endif
#if defined(USE_PROTOCOL_NATIVE) #if defined(USE_PROTOCOL_NATIVE) || defined(USE_PROTOCOL_HTTP)
char t[256]; char t[256];
#endif #endif
@ -382,6 +382,24 @@ int pa__init(pa_module*m) {
# endif # endif
#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) if (ma)
pa_modargs_free(ma); pa_modargs_free(ma);
@ -419,6 +437,24 @@ void pa__done(pa_module*m) {
} }
#elif defined(USE_PROTOCOL_HTTP) #elif defined(USE_PROTOCOL_HTTP)
if (u->http_protocol) { 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_disconnect(u->http_protocol, u->module);
pa_http_protocol_unref(u->http_protocol); pa_http_protocol_unref(u->http_protocol);
} }

View file

@ -97,6 +97,8 @@ struct pa_http_protocol {
pa_core *core; pa_core *core;
pa_idxset *connections; pa_idxset *connections;
pa_strlist *servers;
}; };
enum { enum {
@ -698,7 +700,7 @@ static pa_http_protocol* http_protocol_new(pa_core *c) {
pa_assert(c); pa_assert(c);
p = pa_xnew(pa_http_protocol, 1); p = pa_xnew0(pa_http_protocol, 1);
PA_REFCNT_INIT(p); PA_REFCNT_INIT(p);
p->core = c; p->core = c;
p->connections = pa_idxset_new(NULL, NULL); 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_idxset_free(p->connections, NULL, NULL);
pa_strlist_free(p->servers);
pa_assert_se(pa_shared_remove(p->core, "http-protocol") >= 0); pa_assert_se(pa_shared_remove(p->core, "http-protocol") >= 0);
pa_xfree(p); 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;
}

View file

@ -26,7 +26,7 @@
#include <pulsecore/module.h> #include <pulsecore/module.h>
#include <pulsecore/modargs.h> #include <pulsecore/modargs.h>
#include <pulsecore/iochannel.h> #include <pulsecore/iochannel.h>
#include <pulsecore/strlist.h>
typedef struct pa_http_protocol pa_http_protocol; 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_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_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 #endif