Example #1
0
static void prv_process_sync_task(dlr_task_t *task)
{
	GError *error;

	switch (task->type) {
	case DLR_TASK_GET_VERSION:
		dlr_task_complete(task);
		dleyna_task_queue_task_completed(task->atom.queue_id);
		break;
	case DLR_TASK_GET_SERVERS:
		task->result = dlr_upnp_get_server_ids(g_context.upnp);
		dlr_task_complete(task);
		dleyna_task_queue_task_completed(task->atom.queue_id);
		break;
	case DLR_TASK_RAISE:
	case DLR_TASK_QUIT:
		error = g_error_new(DLEYNA_SERVER_ERROR,
				    DLEYNA_ERROR_NOT_SUPPORTED,
				    "Command not supported.");
		dlr_task_fail(task, error);
		dleyna_task_queue_task_completed(task->atom.queue_id);
		g_error_free(error);
		break;
	default:
		break;
	}
}
Example #2
0
static void prv_process_sync_task(dld_task_t *task)
{
	GError *error;

	switch (task->type) {
	case DLD_TASK_GET_VERSION:
		task->result = g_variant_ref_sink(g_variant_new_string(
								VERSION));
		dld_task_complete(task);
		break;
	case DLD_TASK_GET_DEVICES:
		task->result = dld_upnp_get_device_ids(g_context.upnp);
		dld_task_complete(task);
		break;
	case DLD_TASK_RESCAN:
		dld_upnp_rescan(g_context.upnp);
		dld_task_complete(task);
		break;
	default:
		goto finished;
		break;
	}

	dleyna_task_queue_task_completed(task->atom.queue_id);

finished:
	return;
}
Example #3
0
void dleyna_service_task_begin_action_cb(GUPnPServiceProxy *proxy,
					 GUPnPServiceProxyAction *action,
					 gpointer user_data)
{
	dleyna_service_task_t *task = (dleyna_service_task_t *)user_data;

	task->p_action = NULL;
	task->callback(proxy, action, task->user_data);

	dleyna_task_queue_task_completed(task->base.queue_id);
}
Example #4
0
void dleyna_service_task_cancel_cb(dleyna_task_atom_t *atom, gpointer user_data)
{
	dleyna_service_task_t *task = (dleyna_service_task_t *)atom;

	if (task->p_action) {
		if (task->proxy)
			gupnp_service_proxy_cancel_action(task->proxy,
							  task->p_action);
		task->p_action = NULL;

		dleyna_task_queue_task_completed(task->base.queue_id);
	}
}
Example #5
0
void dleyna_service_task_process_cb(dleyna_task_atom_t *atom,
				    gpointer user_data)
{
	gboolean failed = FALSE;
	dleyna_service_task_t *task = (dleyna_service_task_t *)atom;

	task->p_action = task->t_action(task, task->proxy, &failed);

	if (failed)
		dleyna_task_processor_cancel_queue(task->base.queue_id);

	if (!task->p_action)
		dleyna_task_queue_task_completed(task->base.queue_id);
}
Example #6
0
static void prv_async_task_complete(dlr_task_t *task, GError *error)
{
	DLEYNA_LOG_DEBUG("Enter");

	if (error) {
		dlr_task_fail(task, error);
		g_error_free(error);
	} else {
		dlr_task_complete(task);
	}

	dleyna_task_queue_task_completed(task->atom.queue_id);

	DLEYNA_LOG_DEBUG("Exit");
}
Example #7
0
static void prv_process_sync_task(dls_task_t *task)
{
	dls_client_t *client;
	const gchar *client_name;

	switch (task->type) {
	case DLS_TASK_GET_VERSION:
		task->result = g_variant_ref_sink(g_variant_new_string(
								VERSION));
		dls_task_complete(task);
		break;
	case DLS_TASK_GET_SERVERS:
		task->result = dls_upnp_get_device_ids(g_context.upnp);
		dls_task_complete(task);
		break;
	case DLS_TASK_RESCAN:
		dls_upnp_rescan(g_context.upnp);
		dls_task_complete(task);
		break;
	case DLS_TASK_SET_PROTOCOL_INFO:
		client_name = dleyna_task_queue_get_source(task->atom.queue_id);
		client = g_hash_table_lookup(g_context.watchers, client_name);
		if (client) {
			g_free(client->protocol_info);
			if (task->ut.protocol_info.protocol_info[0]) {
				client->protocol_info =
					task->ut.protocol_info.protocol_info;
				task->ut.protocol_info.protocol_info = NULL;
			} else {
				client->protocol_info = NULL;
			}
		}
		dls_task_complete(task);
		break;
	case DLS_TASK_SET_PREFER_LOCAL_ADDRESSES:
		client_name = dleyna_task_queue_get_source(task->atom.queue_id);
		client = g_hash_table_lookup(g_context.watchers, client_name);
		if (client) {
			client->prefer_local_addresses =
					task->ut.prefer_local_addresses.prefer;
		}
		dls_task_complete(task);
		break;
	case DLS_TASK_GET_UPLOAD_STATUS:
		dls_upnp_get_upload_status(g_context.upnp, task);
		break;
	case DLS_TASK_GET_UPLOAD_IDS:
		dls_upnp_get_upload_ids(g_context.upnp, task);
		break;
	case DLS_TASK_CANCEL_UPLOAD:
		dls_upnp_cancel_upload(g_context.upnp, task);
		break;
	default:
		goto finished;
		break;
	}

	dleyna_task_queue_task_completed(task->atom.queue_id);

finished:
	return;
}