コード例 #1
0
ファイル: wave_encoder.c プロジェクト: Acidburn0zzz/mpd
static void
wave_encoder_close(struct encoder *_encoder)
{
	struct wave_encoder *encoder = (struct wave_encoder *)_encoder;

	fifo_buffer_free(encoder->buffer);
}
/**
 * Data has been received from the client and it is appended to the
 * input buffer.
 */
static bool
httpd_client_received(struct httpd_client *client)
{
	assert(client != NULL);
	assert(client->state != RESPONSE);

	char *line;
	bool success;

	while ((line = httpd_client_read_line(client)) != NULL) {
		success = httpd_client_handle_line(client, line);
		g_free(line);
		if (!success) {
			assert(client->state != RESPONSE);
			return false;
		}

		if (client->state == RESPONSE) {
			if (!fifo_buffer_is_empty(client->input)) {
				g_warning("unexpected input from client");
				return false;
			}

			fifo_buffer_free(client->input);

			return httpd_client_send_response(client);
		}
	}

	return true;
}
コード例 #3
0
ファイル: inotify_source.c プロジェクト: pallotron/MPD
void
mpd_inotify_source_free(struct mpd_inotify_source *source)
{
	g_source_remove(source->id);
	g_io_channel_unref(source->channel);
	fifo_buffer_free(source->buffer);
	close(source->fd);
	g_free(source);
}
コード例 #4
0
ファイル: osx_output_plugin.c プロジェクト: Acidburn0zzz/mpd
static void
osx_output_close(struct audio_output *ao)
{
	struct osx_output *od = (struct osx_output *)ao;

	AudioOutputUnitStop(od->au);
	AudioUnitUninitialize(od->au);

	fifo_buffer_free(od->buffer);
}
コード例 #5
0
ファイル: flac_encoder.c プロジェクト: dwaddle/MPD
static void
flac_encoder_close(struct encoder *_encoder)
{
	struct flac_encoder *encoder = (struct flac_encoder *)_encoder;

	FLAC__stream_encoder_delete(encoder->fse);

	pcm_buffer_deinit(&encoder->expand_buffer);
	fifo_buffer_free(encoder->output_buffer);
}
コード例 #6
0
ファイル: client_new.c プロジェクト: Acidburn0zzz/mpd
void
client_close(struct client *client)
{
	client_list_remove(client);

	client_set_expired(client);

	g_timer_destroy(client->last_activity);

	if (client->cmd_list) {
		free_cmd_list(client->cmd_list);
		client->cmd_list = NULL;
	}

	g_queue_foreach(client->deferred_send, deferred_buffer_free, NULL);
	g_queue_free(client->deferred_send);

	fifo_buffer_free(client->input);

	g_log(G_LOG_DOMAIN, LOG_LEVEL_SECURE,
	      "[%u] closed", client->num);
	g_free(client);
}
void
httpd_client_free(struct httpd_client *client)
{
	assert(client != NULL);

	if (client->state == RESPONSE) {
		if (client->write_source_id != 0)
			g_source_remove(client->write_source_id);

		if (client->current_page != NULL)
			page_unref(client->current_page);

		g_queue_foreach(client->pages, httpd_client_unref_page, NULL);
		g_queue_free(client->pages);
	} else
		fifo_buffer_free(client->input);

	if (client->metadata)
		page_unref (client->metadata);

	g_source_remove(client->read_source_id);
	g_io_channel_unref(client->channel);
	g_free(client);
}