return task;
}
+msu_task_t *msu_task_prefer_local_addresses_new(
+ GDBusMethodInvocation *invocation,
+ GVariant *parameters)
+{
+ msu_task_t *task = g_new0(msu_task_t, 1);
+
+ task->type = MSU_TASK_SET_PREFER_LOCAL_ADDRESSES;
+ task->invocation = invocation;
+ task->synchronous = TRUE;
+ g_variant_get(parameters, "(b)",
+ &task->ut.prefer_local_addresses.prefer);
+
+ return task;
+}
msu_task_t *msu_task_upload_to_any_new(GDBusMethodInvocation *invocation,
const gchar *path, GVariant *parameters)
path, parameters);
}
+msu_task_t *msu_task_get_upload_status_new(GDBusMethodInvocation *invocation,
+ const gchar *path,
+ GVariant *parameters)
+{
+ msu_task_t *task;
+
+ task = prv_m2spec_task_new(MSU_TASK_GET_UPLOAD_STATUS, invocation, path,
+ "(stt)");
+
+ g_variant_get(parameters, "(u)",
+ &task->ut.upload_action.upload_id);
+ task->synchronous = TRUE;
+ task->multiple_retvals = TRUE;
+
+ return task;
+}
+
+msu_task_t *msu_task_get_upload_ids_new(GDBusMethodInvocation *invocation,
+ const gchar *path)
+{
+ msu_task_t *task;
+
+ task = prv_m2spec_task_new(MSU_TASK_GET_UPLOAD_IDS, invocation, path,
+ "(@au)");
+
+ task->synchronous = TRUE;
+
+ return task;
+}
+
+msu_task_t *msu_task_cancel_upload_new(GDBusMethodInvocation *invocation,
+ const gchar *path,
+ GVariant *parameters)
+{
+ msu_task_t *task;
+
+ task = prv_m2spec_task_new(MSU_TASK_CANCEL_UPLOAD, invocation, path,
+ NULL);
+
+ g_variant_get(parameters, "(u)",
+ &task->ut.upload_action.upload_id);
+ task->synchronous = TRUE;
+
+ return task;
+}
+
+msu_task_t *msu_task_delete_new(GDBusMethodInvocation *invocation,
+ const gchar *path)
+{
+ msu_task_t *task;
+
+ task = prv_m2spec_task_new(MSU_TASK_DELETE_OBJECT, invocation,
+ path, NULL);
+ return task;
+}
+
+msu_task_t *msu_task_create_container_new_generic(
+ GDBusMethodInvocation *invocation,
+ msu_task_type_t type,
+ const gchar *path,
+ GVariant *parameters)
+{
+ msu_task_t *task;
+
+ task = prv_m2spec_task_new(type, invocation, path, "(@o)");
+
+ g_variant_get(parameters, "(ss@as)",
+ &task->ut.create_container.display_name,
+ &task->ut.create_container.type,
+ &task->ut.create_container.child_types);
+
+ return task;
+}
+
+msu_task_t *msu_task_update_new(GDBusMethodInvocation *invocation,
+ const gchar *path, GVariant *parameters)
+{
+ msu_task_t *task;
+
+ task = prv_m2spec_task_new(MSU_TASK_UPDATE_OBJECT, invocation, path,
+ NULL);
+
+ g_variant_get(parameters, "(@a{sv}@as)",
+ &task->ut.update.to_add_update,
+ &task->ut.update.to_delete);
+
+ return task;
+}
+
static void prv_msu_task_delete(msu_task_t *task)
{
switch (task->type) {
g_free(task->ut.upload.display_name);
g_free(task->ut.upload.file_path);
break;
+ case MSU_TASK_CREATE_CONTAINER:
+ case MSU_TASK_CREATE_CONTAINER_IN_ANY:
+ g_free(task->ut.create_container.display_name);
+ g_free(task->ut.create_container.type);
+ g_variant_unref(task->ut.create_container.child_types);
+ break;
+ case MSU_TASK_UPDATE_OBJECT:
+ if (task->ut.update.to_add_update)
+ g_variant_unref(task->ut.update.to_add_update);
+ if (task->ut.update.to_delete)
+ g_variant_unref(task->ut.update.to_delete);
+ break;
default:
break;
}