/* * dLeyna * * Copyright (C) 2012-2017 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. * * Mark Ryan * */ #ifndef DLS_TASK_H__ #define DLS_TASK_H__ #include #include #include #include #include "server.h" enum dls_task_type_t_ { DLS_TASK_GET_VERSION, DLS_TASK_GET_SERVERS, DLS_TASK_RESCAN, DLS_TASK_GET_CHILDREN, DLS_TASK_GET_ALL_PROPS, DLS_TASK_GET_PROP, DLS_TASK_SEARCH, DLS_TASK_BROWSE_OBJECTS, DLS_TASK_GET_RESOURCE, DLS_TASK_SET_PREFER_LOCAL_ADDRESSES, DLS_TASK_SET_PROTOCOL_INFO, DLS_TASK_UPLOAD_TO_ANY, DLS_TASK_UPLOAD, DLS_TASK_GET_UPLOAD_STATUS, DLS_TASK_GET_UPLOAD_IDS, DLS_TASK_CANCEL_UPLOAD, DLS_TASK_DELETE_OBJECT, DLS_TASK_CREATE_CONTAINER, DLS_TASK_CREATE_CONTAINER_IN_ANY, DLS_TASK_UPDATE_OBJECT, DLS_TASK_GET_OBJECT_METADATA, DLS_TASK_CREATE_REFERENCE, DLS_TASK_GET_ICON, DLS_TASK_MANAGER_GET_ALL_PROPS, DLS_TASK_MANAGER_GET_PROP, DLS_TASK_MANAGER_SET_PROP, DLS_TASK_WAKE }; typedef enum dls_task_type_t_ dls_task_type_t; typedef void (*dls_cancel_task_t)(void *handle); typedef struct dls_task_get_children_t_ dls_task_get_children_t; struct dls_task_get_children_t_ { gboolean containers; gboolean items; guint start; guint count; GVariant *filter; gchar *sort_by; }; typedef struct dls_task_get_props_t_ dls_task_get_props_t; struct dls_task_get_props_t_ { gchar *interface_name; }; typedef struct dls_task_get_prop_t_ dls_task_get_prop_t; struct dls_task_get_prop_t_ { gchar *prop_name; gchar *interface_name; }; typedef struct dls_task_set_prop_t_ dls_task_set_prop_t; struct dls_task_set_prop_t_ { gchar *prop_name; gchar *interface_name; GVariant *params; }; typedef struct dls_task_search_t_ dls_task_search_t; struct dls_task_search_t_ { gchar *query; guint start; guint count; gchar *sort_by; GVariant *filter; }; typedef struct dls_task_browse_objects_t_ dls_task_browse_objects_t; struct dls_task_browse_objects_t_ { GVariant *objects; GVariant *filter; }; typedef struct dls_task_get_resource_t_ dls_task_get_resource_t; struct dls_task_get_resource_t_ { gchar *protocol_info; GVariant *filter; }; typedef struct dls_task_set_prefer_local_addresses_t_ dls_task_set_prefer_local_addresses_t; struct dls_task_set_prefer_local_addresses_t_ { gboolean prefer; }; typedef struct dls_task_set_protocol_info_t_ dls_task_set_protocol_info_t; struct dls_task_set_protocol_info_t_ { gchar *protocol_info; }; typedef struct dls_task_upload_t_ dls_task_upload_t; struct dls_task_upload_t_ { gchar *display_name; gchar *file_path; }; typedef struct dls_task_upload_action_t_ dls_task_upload_action_t; struct dls_task_upload_action_t_ { guint upload_id; }; typedef struct dls_task_create_container_t_ dls_task_create_container_t; struct dls_task_create_container_t_ { gchar *display_name; gchar *type; GVariant *child_types; }; typedef struct dls_task_update_t_ dls_task_update_t; struct dls_task_update_t_ { GVariant *to_add_update; GVariant *to_delete; }; typedef struct dls_task_create_reference_t_ dls_task_create_reference_t; struct dls_task_create_reference_t_ { gchar *item_path; }; typedef struct dls_task_target_info_t_ dls_task_target_info_t; struct dls_task_target_info_t_ { gchar *path; gchar *root_path; gchar *id; dls_device_t *device; }; typedef struct dls_task_get_icon_t_ dls_task_get_icon_t; struct dls_task_get_icon_t_ { gchar *mime_type; gchar *resolution; }; typedef struct dls_task_t_ dls_task_t; struct dls_task_t_ { dleyna_task_atom_t atom; /* pseudo inheritance - MUST be first field */ dls_task_type_t type; dls_task_target_info_t target; const gchar *result_format; GVariant *result; dleyna_connector_msg_id_t invocation; gboolean synchronous; gboolean multiple_retvals; union { dls_task_get_children_t get_children; dls_task_get_props_t get_props; dls_task_get_prop_t get_prop; dls_task_set_prop_t set_prop; dls_task_search_t search; dls_task_get_resource_t resource; dls_task_set_prefer_local_addresses_t prefer_local_addresses; dls_task_set_protocol_info_t protocol_info; dls_task_upload_t upload; dls_task_upload_action_t upload_action; dls_task_create_container_t create_container; dls_task_update_t update; dls_task_create_reference_t create_reference; dls_task_get_icon_t get_icon; dls_task_browse_objects_t browse_objects; } ut; }; dls_task_t *dls_task_rescan_new(dleyna_connector_msg_id_t invocation); dls_task_t *dls_task_get_version_new(dleyna_connector_msg_id_t invocation); dls_task_t *dls_task_get_servers_new(dleyna_connector_msg_id_t invocation); dls_task_t *dls_task_get_children_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, gboolean items, gboolean containers, GError **error); dls_task_t *dls_task_get_children_ex_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, gboolean items, gboolean containers, GError **error); dls_task_t *dls_task_get_prop_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_get_props_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_search_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_search_ex_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_browse_objects_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_get_resource_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_set_protocol_info_new(dleyna_connector_msg_id_t invocation, GVariant *parameters); dls_task_t *dls_task_prefer_local_addresses_new( dleyna_connector_msg_id_t invocation, GVariant *parameters); dls_task_t *dls_task_upload_to_any_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_upload_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_get_upload_status_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_get_upload_ids_new(dleyna_connector_msg_id_t invocation, const gchar *path, GError **error); dls_task_t *dls_task_cancel_upload_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_delete_new(dleyna_connector_msg_id_t invocation, const gchar *path, GError **error); dls_task_t *dls_task_create_container_new_generic( dleyna_connector_msg_id_t invocation, dls_task_type_t type, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_create_reference_new(dleyna_connector_msg_id_t invocation, dls_task_type_t type, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_update_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_get_metadata_new(dleyna_connector_msg_id_t invocation, const gchar *path, GError **error); dls_task_t *dls_task_get_icon_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_manager_get_prop_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_manager_get_props_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_manager_set_prop_new(dleyna_connector_msg_id_t invocation, const gchar *path, GVariant *parameters, GError **error); dls_task_t *dls_task_wake_new(dleyna_connector_msg_id_t invocation, const gchar *path, GError **error); void dls_task_cancel(dls_task_t *task); void dls_task_complete(dls_task_t *task); void dls_task_fail(dls_task_t *task, GError *error); void dls_task_delete(dls_task_t *task); #endif /* DLS_TASK_H__ */