mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	http: export information about currently active server strings
This commit is contained in:
		
							parent
							
								
									23a798caf6
								
							
						
					
					
						commit
						8dfdfd4e1b
					
				
					 3 changed files with 70 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -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);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue