diff options
Diffstat (limited to 'libdleyna/renderer/task.c')
-rw-r--r-- | libdleyna/renderer/task.c | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/libdleyna/renderer/task.c b/libdleyna/renderer/task.c index 4da6264..eb701ca 100644 --- a/libdleyna/renderer/task.c +++ b/libdleyna/renderer/task.c @@ -97,9 +97,11 @@ static void prv_dlr_task_delete(dlr_task_t *task) dlr_async_task_delete((dlr_async_task_t *)task); switch (task->type) { + case DLR_TASK_MANAGER_GET_ALL_PROPS: case DLR_TASK_GET_ALL_PROPS: g_free(task->ut.get_props.interface_name); break; + case DLR_TASK_MANAGER_GET_PROP: case DLR_TASK_GET_PROP: g_free(task->ut.get_prop.interface_name); g_free(task->ut.get_prop.prop_name); @@ -124,6 +126,10 @@ static void prv_dlr_task_delete(dlr_task_t *task) g_free(task->ut.get_icon.mime_type); g_free(task->ut.get_icon.resolution); break; + case DLR_TASK_WHITE_LIST_ADD_ENTRIES: + case DLR_TASK_WHITE_LIST_REMOVE_ENTRIES: + if (task->ut.white_list.entries != NULL) + g_variant_unref(task->ut.white_list.entries); default: break; } @@ -423,6 +429,97 @@ dlr_task_t *dlr_task_get_icon_new(dleyna_connector_msg_id_t invocation, return task; } +dlr_task_t *dlr_task_wl_enable_new(dleyna_connector_msg_id_t invocation, + GVariant *parameters) +{ + dlr_task_t *task = g_new0(dlr_task_t, 1); + + task->type = DLR_TASK_WHITE_LIST_ENABLE; + task->invocation = invocation; + task->synchronous = TRUE; + g_variant_get(parameters, "(b)", + &task->ut.white_list.enabled); + + return task; +} + +dlr_task_t *dlr_task_wl_clear_new(dleyna_connector_msg_id_t invocation) +{ + dlr_task_t *task = g_new0(dlr_task_t, 1); + + task->type = DLR_TASK_WHITE_LIST_CLEAR; + task->invocation = invocation; + task->synchronous = TRUE; + + return task; +} + +dlr_task_t *dlr_task_wl_add_entries_new(dleyna_connector_msg_id_t invocation, + GVariant *parameters) +{ + dlr_task_t *task = g_new0(dlr_task_t, 1); + + task->type = DLR_TASK_WHITE_LIST_ADD_ENTRIES; + task->invocation = invocation; + task->synchronous = TRUE; + g_variant_get(parameters, "(@as)", &task->ut.white_list.entries); + + return task; +} + +dlr_task_t *dlr_task_wl_remove_entries_new(dleyna_connector_msg_id_t invocation, + GVariant *parameters) +{ + dlr_task_t *task = g_new0(dlr_task_t, 1); + + task->type = DLR_TASK_WHITE_LIST_REMOVE_ENTRIES; + task->invocation = invocation; + task->synchronous = TRUE; + g_variant_get(parameters, "(@as)", &task->ut.white_list.entries); + + return task; +} + +dlr_task_t *dlr_task_manager_get_prop_new(dleyna_connector_msg_id_t invocation, + const gchar *path, + GVariant *parameters, + GError **error) +{ + dlr_task_t *task = (dlr_task_t *)g_new0(dlr_async_task_t, 1); + + g_variant_get(parameters, "(ss)", &task->ut.get_prop.interface_name, + &task->ut.get_prop.prop_name); + g_strstrip(task->ut.get_prop.interface_name); + g_strstrip(task->ut.get_prop.prop_name); + + task->path = g_strstrip(g_strdup(path)); + + task->type = DLR_TASK_MANAGER_GET_PROP; + task->invocation = invocation; + task->result_format = "(v)"; + + return task; +} + +dlr_task_t *dlr_task_manager_get_props_new(dleyna_connector_msg_id_t invocation, + const gchar *path, + GVariant *parameters, + GError **error) +{ + dlr_task_t *task = (dlr_task_t *)g_new0(dlr_async_task_t, 1); + + g_variant_get(parameters, "(s)", &task->ut.get_props.interface_name); + g_strstrip(task->ut.get_props.interface_name); + + task->path = g_strstrip(g_strdup(path)); + + task->type = DLR_TASK_MANAGER_GET_ALL_PROPS; + task->invocation = invocation; + task->result_format = "(@a{sv})"; + + return task; +} + void dlr_task_complete(dlr_task_t *task) { GVariant *result; |