output/httpd: moved code to httpd_output_bind()
This commit is contained in:
parent
c2251dc5a2
commit
c9f726048c
@ -46,6 +46,52 @@ httpd_output_quark(void)
|
|||||||
return g_quark_from_static_string("httpd_output");
|
return g_quark_from_static_string("httpd_output");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
httpd_listen_in_event(G_GNUC_UNUSED GIOChannel *source,
|
||||||
|
G_GNUC_UNUSED GIOCondition condition,
|
||||||
|
gpointer data);
|
||||||
|
|
||||||
|
static bool
|
||||||
|
httpd_output_bind(struct httpd_output *httpd, GError **error_r)
|
||||||
|
{
|
||||||
|
GIOChannel *channel;
|
||||||
|
|
||||||
|
httpd->open = false;
|
||||||
|
|
||||||
|
/* create and set up listener socket */
|
||||||
|
|
||||||
|
httpd->fd = socket_bind_listen(PF_INET, SOCK_STREAM, 0,
|
||||||
|
(struct sockaddr *)&httpd->address,
|
||||||
|
httpd->address_size,
|
||||||
|
16, error_r);
|
||||||
|
if (httpd->fd < 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
g_mutex_lock(httpd->mutex);
|
||||||
|
|
||||||
|
channel = g_io_channel_unix_new(httpd->fd);
|
||||||
|
httpd->source_id = g_io_add_watch(channel, G_IO_IN,
|
||||||
|
httpd_listen_in_event, httpd);
|
||||||
|
g_io_channel_unref(channel);
|
||||||
|
|
||||||
|
g_mutex_unlock(httpd->mutex);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
httpd_output_unbind(struct httpd_output *httpd)
|
||||||
|
{
|
||||||
|
assert(!httpd->open);
|
||||||
|
|
||||||
|
g_mutex_lock(httpd->mutex);
|
||||||
|
|
||||||
|
g_source_remove(httpd->source_id);
|
||||||
|
close(httpd->fd);
|
||||||
|
|
||||||
|
g_mutex_unlock(httpd->mutex);
|
||||||
|
}
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
httpd_output_init(G_GNUC_UNUSED const struct audio_format *audio_format,
|
httpd_output_init(G_GNUC_UNUSED const struct audio_format *audio_format,
|
||||||
const struct config_param *param,
|
const struct config_param *param,
|
||||||
@ -212,29 +258,8 @@ static bool
|
|||||||
httpd_output_enable(void *data, GError **error_r)
|
httpd_output_enable(void *data, GError **error_r)
|
||||||
{
|
{
|
||||||
struct httpd_output *httpd = data;
|
struct httpd_output *httpd = data;
|
||||||
GIOChannel *channel;
|
|
||||||
|
|
||||||
httpd->open = false;
|
return httpd_output_bind(httpd, error_r);
|
||||||
|
|
||||||
/* create and set up listener socket */
|
|
||||||
|
|
||||||
httpd->fd = socket_bind_listen(PF_INET, SOCK_STREAM, 0,
|
|
||||||
(struct sockaddr *)&httpd->address,
|
|
||||||
httpd->address_size,
|
|
||||||
16, error_r);
|
|
||||||
if (httpd->fd < 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
g_mutex_lock(httpd->mutex);
|
|
||||||
|
|
||||||
channel = g_io_channel_unix_new(httpd->fd);
|
|
||||||
httpd->source_id = g_io_add_watch(channel, G_IO_IN,
|
|
||||||
httpd_listen_in_event, httpd);
|
|
||||||
g_io_channel_unref(channel);
|
|
||||||
|
|
||||||
g_mutex_unlock(httpd->mutex);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -242,12 +267,7 @@ httpd_output_disable(void *data)
|
|||||||
{
|
{
|
||||||
struct httpd_output *httpd = data;
|
struct httpd_output *httpd = data;
|
||||||
|
|
||||||
g_mutex_lock(httpd->mutex);
|
httpd_output_unbind(httpd);
|
||||||
|
|
||||||
g_source_remove(httpd->source_id);
|
|
||||||
close(httpd->fd);
|
|
||||||
|
|
||||||
g_mutex_unlock(httpd->mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
Loading…
Reference in New Issue
Block a user