summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRegis Merlino <regis.merlino@intel.com>2013-02-28 14:38:20 +0100
committerRegis Merlino <regis.merlino@intel.com>2013-02-28 14:38:20 +0100
commita41d8b48730b86273de82ce096f1c88a43669662 (patch)
tree5601ca848b78584da483ab0f1cf0de2158122553
parent1a9227c7712c4b75727d613e4ce6d30f2e9b4390 (diff)
downloaddleyna-server-a41d8b48730b86273de82ce096f1c88a43669662.tar.gz
[Service] Moved service task to dleyna-core
Signed-off-by: Regis Merlino <regis.merlino@intel.com>
-rw-r--r--lib/Makefile.am1
-rw-r--r--lib/device.c85
-rw-r--r--lib/service-task.c139
-rw-r--r--lib/service-task.h65
-rw-r--r--lib/upnp.c10
5 files changed, 47 insertions, 253 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 32dbd1f..6778795 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -28,7 +28,6 @@ libdleyna_server_1_0_la_SOURCES = $(libdleyna_serverinc_HEADERS) \
path.c \
props.c \
search.c \
- service-task.c \
sort.c \
task.c \
upnp.c
diff --git a/lib/device.c b/lib/device.c
index 3972d5a..c6b7dc4 100644
--- a/lib/device.c
+++ b/lib/device.c
@@ -30,12 +30,12 @@
#include <libdleyna/core/error.h>
#include <libdleyna/core/log.h>
+#include <libdleyna/core/service-task.h>
#include "device.h"
#include "interface.h"
#include "path.h"
#include "server.h"
-#include "service-task.h"
#define DLS_SYSTEM_UPDATE_VAR "SystemUpdateID"
#define DLS_CONTAINER_UPDATE_VAR "ContainerUpdateIDs"
@@ -648,7 +648,7 @@ on_error:
}
static GUPnPServiceProxyAction *prv_get_feature_list(
- dls_service_task_t *task,
+ dleyna_service_task_t *task,
GUPnPServiceProxy *proxy,
gboolean *failed)
{
@@ -656,7 +656,7 @@ static GUPnPServiceProxyAction *prv_get_feature_list(
return gupnp_service_proxy_begin_action(
proxy, "GetFeatureList",
- dls_service_task_begin_action_cb,
+ dleyna_service_task_begin_action_cb,
task, NULL);
}
@@ -723,7 +723,7 @@ on_error:
}
static GUPnPServiceProxyAction *prv_get_sort_ext_capabilities(
- dls_service_task_t *task,
+ dleyna_service_task_t *task,
GUPnPServiceProxy *proxy,
gboolean *failed)
{
@@ -732,7 +732,7 @@ static GUPnPServiceProxyAction *prv_get_sort_ext_capabilities(
return gupnp_service_proxy_begin_action(
proxy,
"GetSortExtensionCapabilities",
- dls_service_task_begin_action_cb,
+ dleyna_service_task_begin_action_cb,
task, NULL);
}
@@ -799,7 +799,7 @@ on_error:
}
static GUPnPServiceProxyAction *prv_get_sort_capabilities(
- dls_service_task_t *task,
+ dleyna_service_task_t *task,
GUPnPServiceProxy *proxy,
gboolean *failed)
{
@@ -808,7 +808,7 @@ static GUPnPServiceProxyAction *prv_get_sort_capabilities(
return gupnp_service_proxy_begin_action(
proxy,
"GetSortCapabilities",
- dls_service_task_begin_action_cb,
+ dleyna_service_task_begin_action_cb,
task, NULL);
}
@@ -841,7 +841,7 @@ on_error:
}
static GUPnPServiceProxyAction *prv_get_search_capabilities(
- dls_service_task_t *task,
+ dleyna_service_task_t *task,
GUPnPServiceProxy *proxy,
gboolean *failed)
{
@@ -849,17 +849,17 @@ static GUPnPServiceProxyAction *prv_get_search_capabilities(
return gupnp_service_proxy_begin_action(
proxy, "GetSearchCapabilities",
- dls_service_task_begin_action_cb,
+ dleyna_service_task_begin_action_cb,
task, NULL);
}
-static GUPnPServiceProxyAction *prv_subscribe(dls_service_task_t *task,
+static GUPnPServiceProxyAction *prv_subscribe(dleyna_service_task_t *task,
GUPnPServiceProxy *proxy,
gboolean *failed)
{
dls_device_t *device;
- device = dls_service_task_get_device(task);
+ device = (dls_device_t *)dleyna_service_task_get_user_data(task);
dls_device_subscribe_to_contents_change(device);
*failed = FALSE;
@@ -902,7 +902,7 @@ static gboolean prv_subtree_interface_filter(const gchar *object_path,
return retval;
}
-static GUPnPServiceProxyAction *prv_declare(dls_service_task_t *task,
+static GUPnPServiceProxyAction *prv_declare(dleyna_service_task_t *task,
GUPnPServiceProxy *proxy,
gboolean *failed)
{
@@ -910,9 +910,8 @@ static GUPnPServiceProxyAction *prv_declare(dls_service_task_t *task,
dls_device_t *device;
prv_new_device_ct_t *priv_t;
- device = dls_service_task_get_device(task);
-
- priv_t = (prv_new_device_ct_t *)dls_service_task_get_user_data(task);
+ priv_t = (prv_new_device_ct_t *)dleyna_service_task_get_user_data(task);
+ device = priv_t->dev;
id = dls_server_get_connector()->publish_subtree(priv_t->connection,
device->path,
@@ -977,26 +976,26 @@ dls_device_t *dls_device_new(
context = dls_device_append_new_context(dev, ip_address, proxy);
s_proxy = context->service_proxy;
- dls_service_task_add(queue_id, prv_get_search_capabilities,
- dev, s_proxy,
- prv_get_search_capabilities_cb, NULL, priv_t);
+ dleyna_service_task_add(queue_id, prv_get_search_capabilities,
+ s_proxy,
+ prv_get_search_capabilities_cb, NULL, priv_t);
- dls_service_task_add(queue_id, prv_get_sort_capabilities,
- dev, s_proxy,
- prv_get_sort_capabilities_cb, NULL, priv_t);
+ dleyna_service_task_add(queue_id, prv_get_sort_capabilities,
+ s_proxy,
+ prv_get_sort_capabilities_cb, NULL, priv_t);
- dls_service_task_add(queue_id, prv_get_sort_ext_capabilities,
- dev, s_proxy,
- prv_get_sort_ext_capabilities_cb, NULL, priv_t);
+ dleyna_service_task_add(queue_id, prv_get_sort_ext_capabilities,
+ s_proxy,
+ prv_get_sort_ext_capabilities_cb, NULL, priv_t);
- dls_service_task_add(queue_id, prv_get_feature_list, dev, s_proxy,
- prv_get_feature_list_cb, NULL, priv_t);
+ dleyna_service_task_add(queue_id, prv_get_feature_list, s_proxy,
+ prv_get_feature_list_cb, NULL, priv_t);
- dls_service_task_add(queue_id, prv_subscribe, dev, s_proxy,
- NULL, NULL, NULL);
+ dleyna_service_task_add(queue_id, prv_subscribe, s_proxy,
+ NULL, NULL, dev);
- dls_service_task_add(queue_id, prv_declare, dev, s_proxy,
- NULL, g_free, priv_t);
+ dleyna_service_task_add(queue_id, prv_declare, s_proxy,
+ NULL, g_free, priv_t);
dleyna_task_queue_start(queue_id);
@@ -4099,20 +4098,21 @@ on_exit:
}
static GUPnPServiceProxyAction *prv_create_didls_item_browse(
- dls_service_task_t *task,
+ dleyna_service_task_t *task,
GUPnPServiceProxy *proxy,
gboolean *failed)
{
prv_new_playlist_ct_t *priv_t;
- priv_t = (prv_new_playlist_ct_t *)dls_service_task_get_user_data(task);
+ priv_t = (prv_new_playlist_ct_t *)dleyna_service_task_get_user_data(
+ task);
*failed = FALSE;
DLEYNA_LOG_DEBUG("Browse for ID: %s", priv_t->id);
return gupnp_service_proxy_begin_action(
proxy, "Browse",
- dls_service_task_begin_action_cb, task,
+ dleyna_service_task_begin_action_cb, task,
"ObjectID", G_TYPE_STRING, priv_t->id,
"BrowseFlag", G_TYPE_STRING, "BrowseMetadata",
"Filter", G_TYPE_STRING, "upnp:artist,upnp:album,res",
@@ -4162,12 +4162,11 @@ static gboolean prv_create_chain_didls_items(dls_task_t *task,
priv_t->cb_data = cb_data;
priv_t->id = id;
- dls_service_task_add(a_playlist->queue_id,
- prv_create_didls_item_browse,
- task->target.device,
- proxy,
- prv_create_didls_item_browse_cb,
- prv_didls_free, priv_t);
+ dleyna_service_task_add(a_playlist->queue_id,
+ prv_create_didls_item_browse,
+ proxy,
+ prv_create_didls_item_browse_cb,
+ prv_didls_free, priv_t);
}
DLEYNA_LOG_DEBUG_NL();
@@ -4318,12 +4317,12 @@ void dls_device_playlist_upload(dls_client_t *client,
queue_id = dleyna_task_processor_add_queue(
dls_server_get_task_processor(),
- dls_service_task_create_source(),
+ dleyna_service_task_create_source(),
DLS_SERVER_SINK,
DLEYNA_TASK_QUEUE_FLAG_AUTO_REMOVE,
- dls_service_task_process_cb,
- dls_service_task_cancel_cb,
- dls_service_task_delete_cb);
+ dleyna_service_task_process_cb,
+ dleyna_service_task_cancel_cb,
+ dleyna_service_task_delete_cb);
dleyna_task_queue_set_finally(queue_id, prv_create_didls_chain_end);
dleyna_task_queue_set_user_data(queue_id, priv_t);
diff --git a/lib/service-task.c b/lib/service-task.c
deleted file mode 100644
index b3abb42..0000000
--- a/lib/service-task.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * dLeyna
- *
- * Copyright (C) 2012-2013 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU Lesser General Public License,
- * version 2.1, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Ludovic Ferrandis <ludovic.ferrandis@intel.com>
- * Regis Merlino <regis.merlino@intel.com>
- *
- */
-
-#include <libdleyna/core/log.h>
-#include <libdleyna/core/task-processor.h>
-
-#include "device.h"
-#include "service-task.h"
-
-struct dls_service_task_t_ {
- dleyna_task_atom_t base; /* pseudo inheritance - MUST be first field */
- GUPnPServiceProxyActionCallback callback;
- GUPnPServiceProxyAction *p_action;
- GDestroyNotify free_func;
- gpointer user_data;
- dls_service_task_action t_action;
- dls_device_t *device;
- GUPnPServiceProxy *proxy;
-};
-
-const char *dls_service_task_create_source(void)
-{
- static unsigned int cpt = 1;
- static char source[20];
-
- g_snprintf(source, 20, "source-%d", cpt);
- cpt++;
-
- return source;
-}
-
-void dls_service_task_add(const dleyna_task_queue_key_t *queue_id,
- dls_service_task_action action,
- dls_device_t *device,
- GUPnPServiceProxy *proxy,
- GUPnPServiceProxyActionCallback action_cb,
- GDestroyNotify free_func,
- gpointer cb_user_data)
-{
- dls_service_task_t *task;
-
- task = g_new0(dls_service_task_t, 1);
-
- task->t_action = action;
- task->callback = action_cb;
- task->free_func = free_func;
- task->user_data = cb_user_data;
- task->device = device;
- task->proxy = proxy;
-
- if (proxy != NULL)
- g_object_add_weak_pointer((G_OBJECT(proxy)),
- (gpointer *)&task->proxy);
-
- dleyna_task_queue_add_task(queue_id, &task->base);
-}
-
-void dls_service_task_begin_action_cb(GUPnPServiceProxy *proxy,
- GUPnPServiceProxyAction *action,
- gpointer user_data)
-{
- dls_service_task_t *task = (dls_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);
-}
-
-void dls_service_task_process_cb(dleyna_task_atom_t *atom, gpointer user_data)
-{
- gboolean failed = FALSE;
- dls_service_task_t *task = (dls_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);
- else if (!task->p_action)
- dleyna_task_queue_task_completed(task->base.queue_id);
-}
-
-void dls_service_task_cancel_cb(dleyna_task_atom_t *atom, gpointer user_data)
-{
- dls_service_task_t *task = (dls_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);
- }
-}
-
-void dls_service_task_delete_cb(dleyna_task_atom_t *atom, gpointer user_data)
-{
- dls_service_task_t *task = (dls_service_task_t *)atom;
-
- if (task->free_func != NULL)
- task->free_func(task->user_data);
-
- if (task->proxy != NULL)
- g_object_remove_weak_pointer((G_OBJECT(task->proxy)),
- (gpointer *)&task->proxy);
-
- g_free(task);
-}
-
-dls_device_t *dls_service_task_get_device(dls_service_task_t *task)
-{
- return task->device;
-}
-
-gpointer *dls_service_task_get_user_data(dls_service_task_t *task)
-{
- return task->user_data;
-}
diff --git a/lib/service-task.h b/lib/service-task.h
deleted file mode 100644
index 957982d..0000000
--- a/lib/service-task.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * dLeyna
- *
- * Copyright (C) 2012-2013 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU Lesser General Public License,
- * version 2.1, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Ludovic Ferrandis <ludovic.ferrandis@intel.com>
- * Regis Merlino <regis.merlino@intel.com>
- *
- */
-
-#ifndef DLS_SERVICE_TASK_H__
-#define DLS_SERVICE_TASK_H__
-
-#include <glib.h>
-#include <libgupnp/gupnp-service-proxy.h>
-
-#include <libdleyna/core/task-atom.h>
-
-#include "server.h"
-
-typedef struct dls_service_task_t_ dls_service_task_t;
-
-typedef GUPnPServiceProxyAction *(*dls_service_task_action)
- (dls_service_task_t *task,
- GUPnPServiceProxy *proxy,
- gboolean *failed);
-
-const char *dls_service_task_create_source(void);
-
-void dls_service_task_add(const dleyna_task_queue_key_t *queue_id,
- dls_service_task_action action,
- dls_device_t *device,
- GUPnPServiceProxy *proxy,
- GUPnPServiceProxyActionCallback action_cb,
- GDestroyNotify free_func,
- gpointer cb_user_data);
-
-void dls_service_task_begin_action_cb(GUPnPServiceProxy *proxy,
- GUPnPServiceProxyAction *action,
- gpointer user_data);
-
-void dls_service_task_process_cb(dleyna_task_atom_t *atom, gpointer user_data);
-
-void dls_service_task_cancel_cb(dleyna_task_atom_t *atom, gpointer user_data);
-
-void dls_service_task_delete_cb(dleyna_task_atom_t *atom, gpointer user_data);
-
-dls_device_t *dls_service_task_get_device(dls_service_task_t *task);
-
-gpointer *dls_service_task_get_user_data(dls_service_task_t *task);
-
-#endif /* DLS_SERVICE_TASK_H__ */
diff --git a/lib/upnp.c b/lib/upnp.c
index a39217d..dcb9876 100644
--- a/lib/upnp.c
+++ b/lib/upnp.c
@@ -28,9 +28,9 @@
#include <libdleyna/core/error.h>
#include <libdleyna/core/log.h>
+#include <libdleyna/core/service-task.h>
#include "async.h"
-#include "service-task.h"
#include "device.h"
#include "interface.h"
#include "path.h"
@@ -137,12 +137,12 @@ static void prv_server_available_cb(GUPnPControlPoint *cp,
queue_id = dleyna_task_processor_add_queue(
dls_server_get_task_processor(),
- dls_service_task_create_source(),
+ dleyna_service_task_create_source(),
DLS_SERVER_SINK,
DLEYNA_TASK_QUEUE_FLAG_AUTO_REMOVE,
- dls_service_task_process_cb,
- dls_service_task_cancel_cb,
- dls_service_task_delete_cb);
+ dleyna_service_task_process_cb,
+ dleyna_service_task_cancel_cb,
+ dleyna_service_task_delete_cb);
dleyna_task_queue_set_finally(queue_id, prv_device_chain_end);
dleyna_task_queue_set_user_data(queue_id, priv_t);