4 * Copyright (C) 2012-2013 Intel Corporation. All rights reserved.
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms and conditions of the GNU Lesser General Public License,
8 * version 2.1, as published by the Free Software Foundation.
10 * This program is distributed in the hope it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
19 * Mark Ryan <mark.d.ryan@intel.com>
29 #include <libdleyna/core/connector.h>
30 #include <libdleyna/core/task-atom.h>
34 enum dls_task_type_t_ {
38 DLS_TASK_GET_CHILDREN,
39 DLS_TASK_GET_ALL_PROPS,
42 DLS_TASK_BROWSE_OBJECTS,
43 DLS_TASK_GET_RESOURCE,
44 DLS_TASK_SET_PREFER_LOCAL_ADDRESSES,
45 DLS_TASK_SET_PROTOCOL_INFO,
46 DLS_TASK_UPLOAD_TO_ANY,
48 DLS_TASK_GET_UPLOAD_STATUS,
49 DLS_TASK_GET_UPLOAD_IDS,
50 DLS_TASK_CANCEL_UPLOAD,
51 DLS_TASK_DELETE_OBJECT,
52 DLS_TASK_CREATE_CONTAINER,
53 DLS_TASK_CREATE_CONTAINER_IN_ANY,
54 DLS_TASK_UPDATE_OBJECT,
55 DLS_TASK_GET_OBJECT_METADATA,
56 DLS_TASK_CREATE_REFERENCE,
58 DLS_TASK_MANAGER_GET_ALL_PROPS,
59 DLS_TASK_MANAGER_GET_PROP,
60 DLS_TASK_MANAGER_SET_PROP
62 typedef enum dls_task_type_t_ dls_task_type_t;
64 typedef void (*dls_cancel_task_t)(void *handle);
66 typedef struct dls_task_get_children_t_ dls_task_get_children_t;
67 struct dls_task_get_children_t_ {
76 typedef struct dls_task_get_props_t_ dls_task_get_props_t;
77 struct dls_task_get_props_t_ {
78 gchar *interface_name;
81 typedef struct dls_task_get_prop_t_ dls_task_get_prop_t;
82 struct dls_task_get_prop_t_ {
84 gchar *interface_name;
87 typedef struct dls_task_set_prop_t_ dls_task_set_prop_t;
88 struct dls_task_set_prop_t_ {
90 gchar *interface_name;
94 typedef struct dls_task_search_t_ dls_task_search_t;
95 struct dls_task_search_t_ {
103 typedef struct dls_task_browse_objects_t_ dls_task_browse_objects_t;
104 struct dls_task_browse_objects_t_ {
109 typedef struct dls_task_get_resource_t_ dls_task_get_resource_t;
110 struct dls_task_get_resource_t_ {
111 gchar *protocol_info;
115 typedef struct dls_task_set_prefer_local_addresses_t_
116 dls_task_set_prefer_local_addresses_t;
117 struct dls_task_set_prefer_local_addresses_t_ {
121 typedef struct dls_task_set_protocol_info_t_ dls_task_set_protocol_info_t;
122 struct dls_task_set_protocol_info_t_ {
123 gchar *protocol_info;
126 typedef struct dls_task_upload_t_ dls_task_upload_t;
127 struct dls_task_upload_t_ {
132 typedef struct dls_task_upload_action_t_ dls_task_upload_action_t;
133 struct dls_task_upload_action_t_ {
137 typedef struct dls_task_create_container_t_ dls_task_create_container_t;
138 struct dls_task_create_container_t_ {
141 GVariant *child_types;
144 typedef struct dls_task_update_t_ dls_task_update_t;
145 struct dls_task_update_t_ {
146 GVariant *to_add_update;
150 typedef struct dls_task_create_reference_t_ dls_task_create_reference_t;
151 struct dls_task_create_reference_t_ {
155 typedef struct dls_task_target_info_t_ dls_task_target_info_t;
156 struct dls_task_target_info_t_ {
160 dls_device_t *device;
163 typedef struct dls_task_get_icon_t_ dls_task_get_icon_t;
164 struct dls_task_get_icon_t_ {
169 typedef struct dls_task_t_ dls_task_t;
171 dleyna_task_atom_t atom; /* pseudo inheritance - MUST be first field */
172 dls_task_type_t type;
173 dls_task_target_info_t target;
174 const gchar *result_format;
176 dleyna_connector_msg_id_t invocation;
177 gboolean synchronous;
178 gboolean multiple_retvals;
180 dls_task_get_children_t get_children;
181 dls_task_get_props_t get_props;
182 dls_task_get_prop_t get_prop;
183 dls_task_set_prop_t set_prop;
184 dls_task_search_t search;
185 dls_task_get_resource_t resource;
186 dls_task_set_prefer_local_addresses_t prefer_local_addresses;
187 dls_task_set_protocol_info_t protocol_info;
188 dls_task_upload_t upload;
189 dls_task_upload_action_t upload_action;
190 dls_task_create_container_t create_container;
191 dls_task_update_t update;
192 dls_task_create_reference_t create_reference;
193 dls_task_get_icon_t get_icon;
194 dls_task_browse_objects_t browse_objects;
198 dls_task_t *dls_task_rescan_new(dleyna_connector_msg_id_t invocation);
200 dls_task_t *dls_task_get_version_new(dleyna_connector_msg_id_t invocation);
202 dls_task_t *dls_task_get_servers_new(dleyna_connector_msg_id_t invocation);
204 dls_task_t *dls_task_get_children_new(dleyna_connector_msg_id_t invocation,
205 const gchar *path, GVariant *parameters,
206 gboolean items, gboolean containers,
209 dls_task_t *dls_task_get_children_ex_new(dleyna_connector_msg_id_t invocation,
211 GVariant *parameters, gboolean items,
215 dls_task_t *dls_task_get_prop_new(dleyna_connector_msg_id_t invocation,
216 const gchar *path, GVariant *parameters,
219 dls_task_t *dls_task_get_props_new(dleyna_connector_msg_id_t invocation,
220 const gchar *path, GVariant *parameters,
223 dls_task_t *dls_task_search_new(dleyna_connector_msg_id_t invocation,
224 const gchar *path, GVariant *parameters,
227 dls_task_t *dls_task_search_ex_new(dleyna_connector_msg_id_t invocation,
228 const gchar *path, GVariant *parameters,
231 dls_task_t *dls_task_browse_objects_new(dleyna_connector_msg_id_t invocation,
232 const gchar *path, GVariant *parameters,
235 dls_task_t *dls_task_get_resource_new(dleyna_connector_msg_id_t invocation,
236 const gchar *path, GVariant *parameters,
239 dls_task_t *dls_task_set_protocol_info_new(dleyna_connector_msg_id_t invocation,
240 GVariant *parameters);
242 dls_task_t *dls_task_prefer_local_addresses_new(
243 dleyna_connector_msg_id_t invocation,
244 GVariant *parameters);
246 dls_task_t *dls_task_upload_to_any_new(dleyna_connector_msg_id_t invocation,
247 const gchar *path, GVariant *parameters,
250 dls_task_t *dls_task_upload_new(dleyna_connector_msg_id_t invocation,
251 const gchar *path, GVariant *parameters,
254 dls_task_t *dls_task_get_upload_status_new(dleyna_connector_msg_id_t invocation,
256 GVariant *parameters,
259 dls_task_t *dls_task_get_upload_ids_new(dleyna_connector_msg_id_t invocation,
263 dls_task_t *dls_task_cancel_upload_new(dleyna_connector_msg_id_t invocation,
265 GVariant *parameters,
268 dls_task_t *dls_task_delete_new(dleyna_connector_msg_id_t invocation,
272 dls_task_t *dls_task_create_container_new_generic(
273 dleyna_connector_msg_id_t invocation,
274 dls_task_type_t type,
276 GVariant *parameters,
279 dls_task_t *dls_task_create_reference_new(dleyna_connector_msg_id_t invocation,
280 dls_task_type_t type,
282 GVariant *parameters,
285 dls_task_t *dls_task_update_new(dleyna_connector_msg_id_t invocation,
286 const gchar *path, GVariant *parameters,
289 dls_task_t *dls_task_get_metadata_new(dleyna_connector_msg_id_t invocation,
293 dls_task_t *dls_task_get_icon_new(dleyna_connector_msg_id_t invocation,
294 const gchar *path, GVariant *parameters,
297 dls_task_t *dls_task_manager_get_prop_new(dleyna_connector_msg_id_t invocation,
299 GVariant *parameters,
302 dls_task_t *dls_task_manager_get_props_new(dleyna_connector_msg_id_t invocation,
304 GVariant *parameters,
307 dls_task_t *dls_task_manager_set_prop_new(dleyna_connector_msg_id_t invocation,
309 GVariant *parameters,
312 void dls_task_cancel(dls_task_t *task);
314 void dls_task_complete(dls_task_t *task);
316 void dls_task_fail(dls_task_t *task, GError *error);
318 void dls_task_delete(dls_task_t *task);
320 #endif /* DLS_TASK_H__ */