3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 #ifndef DATA_CONNECTOR_INTERFACE_H_
19 #define DATA_CONNECTOR_INTERFACE_H_
21 #include "data-adapter/error.h"
23 #include "data_connector_resource.h"
27 #endif /* __cplusplus */
30 * @file data_connector_interface.h
31 * @brief Interface list in this header will be implemented plugIn developer.
32 * @remarks Implementation will operate sync-agent-framework data-adapter module.
35 /** @addtogroup plugin_dataconnector DataConnector Domain
41 * API to connect(open) to the service
43 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
48 * @see sync_agent_plugin_open_service()
51 sync_agent_da_return_e sync_agent_plugin_open_service(void);
54 * API to disconnect(close) to the service
56 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
61 * @see sync_agent_plugin_close_service()
64 sync_agent_da_return_e sync_agent_plugin_close_service(void);
67 * API to start transaction for service storage
69 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
74 * @see sync_agent_plugin_begin_transaction()
77 sync_agent_da_return_e sync_agent_plugin_begin_transaction(void);
80 * API to end transaction for service storage
82 * @param[in] is_success flag to decide commit/rollback (1:commit, 0:rollback)
84 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
89 * @see sync_agent_plugin_end_transaction(int)
92 sync_agent_da_return_e sync_agent_plugin_end_transaction(int is_success);
95 * API to insert item into service storage
97 * @param[in] account_id service account id
98 * @param[in] folder_id service folder id
99 * @param[in] data data to add to the service
100 * @param[in] item_id as returned by sync_agent_plugin_add_item() - success : id of the newly item added to the service, error : NULL
102 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
107 * @see sync_agent_plugin_add_item(int, char *, void *, char **)
110 sync_agent_da_return_e sync_agent_plugin_add_item(int account_id, char *folder_id, void *data, char **item_id);
113 * API to update item from service storage
115 * @param[in] account_id service account id
116 * @param[in] folder_id service folder id
117 * @param[in] item_id service item id
118 * @param[in] data data to update to the service
120 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
125 * @see sync_agent_plugin_update_item(int, char *, char *, void *)
128 sync_agent_da_return_e sync_agent_plugin_update_item(int account_id, char *folder_id, char *item_id, void *data);
131 * API to delete item from service storage
133 * @param[in] account_id service account id
134 * @param[in] folder_id service folder id
135 * @param[in] item_id service id of item expected to be deleted
137 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
142 * @see sync_agent_plugin_delete_item(int, char *, char *)
145 sync_agent_da_return_e sync_agent_plugin_delete_item(int account_id, char *folder_id, char *item_id);
148 * API to delete all items from service storage
150 * @param[in] account_id service account id
152 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
157 * @see sync_agent_plugin_delete_all_items(int)
160 sync_agent_da_return_e sync_agent_plugin_delete_all_items(int account_id);
163 * API to get item from service storage
165 * @param[in] account_id service account id
166 * @param[in] folder_id service folder id
167 * @param[in] item_id expected to get service item id
168 * @param[in] data as returned by sync_agent_plugin_get_item() - success : item info, error : NULL
170 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
175 * @see sync_agent_plugin_get_item(int, char *, char *, void **)
178 sync_agent_da_return_e sync_agent_plugin_get_item(int account_id, char *folder_id, char *item_id, void **data);
181 * API to insert folder into service storage
183 * @param[in] account_id service account id
184 * @param[in] folder_name folder name
185 * @param[in] folder_type folder type
186 * @param[in] folder_id as returned by sync_agent_plugin_add_folder() - success : id of the newly folder added to the service, fail : NULL
188 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
193 * @see sync_agent_plugin_add_folder(int, char *, int, char **)
196 sync_agent_da_return_e sync_agent_plugin_add_folder(int account_id, char *folder_name, int folder_type, char **folder_id);
199 * API to delete folder from service storage
201 * @param[in] account_id service account id
202 * @param[in] folder_id service folder id
204 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
209 * @see sync_agent_plugin_delete_folder(int, char *)
212 sync_agent_da_return_e sync_agent_plugin_delete_folder(int account_id, char *folder_id);
215 * API to get folder info from service storage
217 * @param[in] account_id service account id
218 * @param[in] folder_id service folder id
219 * @param[in] out_folder_name as returned by sync_agent_plugin_get_folder() - success : folder name, fail : NULL
220 * @param[in] out_folder_type as returned by sync_agent_plugin_get_folder() - success : folder type, fail : -1
222 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
227 * @see sync_agent_plugin_get_folder(int, char *, char **, int *)
230 sync_agent_da_return_e sync_agent_plugin_get_folder(int account_id, char *folder_id, char **out_folder_name, int *out_folder_type);
233 * API to execute data into service
235 * @param[in] account_id service account id
236 * @param[in] execute_key execute key
237 * @param[in] execute_values execute values
238 * @param[in] result as returned by sync_agent_plugin_execute() - extension result info
240 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
245 * @see sync_agent_plugin_execute(int, const char *, void *, void **)
248 sync_agent_da_return_e sync_agent_plugin_execute(int account_id, const char *execute_key, void *execute_values, void **result);
251 * API to get item used count
253 * @return current_item_count on success, negative value on error
258 * @see sync_agent_plugin_get_used_item_count()
261 int sync_agent_plugin_get_used_item_count(void);
264 * API to get item used count for folder
266 * @param[in] account_id service account id
267 * @param[in] folder_id service folder id
269 * @return current_item_count on success, negative value on error
274 * @see sync_agent_plugin_get_used_item_count_for_folder(int, char *)
277 int sync_agent_plugin_get_used_item_count_for_folder(int account_id, char *folder_id);
280 * API to get folder id list of a account
282 * @param[in] account_id service account id
283 * @param[in] folder_count as returned by sync_agent_plugin_get_folder_id_list() - success : folder count, fail or not exist : 0
284 * @param[in] folder_type_list as returned by sync_agent_plugin_get_folder_id_list() - success : list, fail or not exist : NULL
286 * @return folder_id_list on success, NULL on error or not exist
291 * @see sync_agent_plugin_get_folder_id_list(int, int *, int **)
294 char **sync_agent_plugin_get_folder_id_list(int account_id, int *folder_count, int **folder_type_list);
297 * API to get all account id list that service has currently
299 * @param[in] count as returned by sync_agent_plugin_get_account_id_list() - success : count of account id, fail or not exist : 0
300 * @return account_id_list on success, NULL on fail or not exist
305 * @see sync_agent_plugin_get_account_id_list(int *)
308 int *sync_agent_plugin_get_account_id_list(int *count);
311 * API to write data store items to file
313 * @param[in] account_id service account id
314 * @param[in] file_path as returned by sync_agent_plugin_backup_service_items_to_file() - written file path
316 * @return SYNC_AGENT_DA_SUCCESS on success, minus value on error
321 * @see sync_agent_plugin_backup_service_items_to_file(int, char **)
324 sync_agent_da_return_e sync_agent_plugin_backup_service_items_to_file(int account_id, char **file_path);
327 * API to add file wrote item to data store
329 * @param[in] account_id service account id
330 * @param[in] file_path file path
332 * @return SYNC_AGENT_DA_SUCCESS on success, minus value on error
337 * @see sync_agent_plugin_restore_service_items_from_file(int, const char *)
340 sync_agent_da_return_e sync_agent_plugin_restore_service_items_from_file(int account_id, const char *file_path);
343 * API to get added item list after specific point
345 * @param[in] account_id service account id
346 * @param[in] folder_id service folder id
347 * @param[in] changepoint specific point
348 * @param[in] changeCount as returned by sync_agent_plugin_get_changed_item_for_folder_add() - success : added item count, fail or not exist : NULL
350 * @return added_item_info_list (if exist) on success, NULL on error or not exist
355 * @see sync_agent_plugin_get_changed_item_for_folder_add(int, const char *, int, int *)
358 sync_agent_plugin_item_node_s *sync_agent_plugin_get_changed_item_for_folder_add(int account_id, const char *folder_id, int changepoint, int *changeCount);
361 * API to get deleted item list after specific point
363 * @param[in] account_id service account id
364 * @param[in] folder_id service folder id
365 * @param[in] changepoint specific point
366 * @param[in] changeCount as returned by sync_agent_plugin_get_changed_item_for_folder_delete() - success : deleted item count, fail or not exist : NULL
368 * @return deleted_item_info_list (if exist) on success, NULL on error or not exist
373 * @see sync_agent_plugin_get_changed_item_for_folder_delete(int, const char *, int, int *)
376 sync_agent_plugin_item_node_s *sync_agent_plugin_get_changed_item_for_folder_delete(int account_id, const char *folder_id, int changepoint, int *changeCount);
379 * API to get updated item list after specific point
381 * @param[in] account_id service account id
382 * @param[in] folder_id service folder id
383 * @param[in] changepoint specific point
384 * @param[in] changeCount as returned by sync_agent_plugin_get_changed_item_for_folder_update() - success : updated item count, fail or not exist : NULL
386 * @return updated_item_info_list (if exist) on success, NULL on error or not exist
391 * @see sync_agent_plugin_get_changed_item_for_folder_update(int, const char *, int, int *)
394 sync_agent_plugin_item_node_s *sync_agent_plugin_get_changed_item_for_folder_update(int account_id, const char *folder_id, int changepoint, int *changeCount);
397 * API to get last storage change point information
399 * @return last storage changing point information on success, 0 on error
404 * @see sync_agent_plugin_get_last_change_point()
407 int sync_agent_plugin_get_last_change_point(void);
410 * API to check notification for the storage change
412 * @param[in] data user data
417 * @see sync_agent_plugin_start_listening_change_noti(void *)
420 void sync_agent_plugin_start_listening_change_noti(void *data);
423 * API to set callback function to handle added item to storage
425 * @param[in] callback callback function - this function is provided from sync-agent-framework
430 * @see data_connector_resource.h
433 void sync_agent_plugin_set_callback_add_item(sync_agent_add_item_cb_plugin callback);
436 * API to set callback function to handle deleted item to storage
438 * @param[in] callback callback function - this function is provided from sync-agent-framework
443 * @see data_connector_resource.h
446 void sync_agent_plugin_set_callback_delete_item(sync_agent_del_item_cb_plugin callback);
449 * API to set callback function to handle updated item to storage
451 * @param[in] callback callback function - this function is provided from sync-agent-framework
456 * @see data_connector_resource.h
459 void sync_agent_plugin_set_callback_update_item(sync_agent_update_item_cb_plugin callback);
462 * API to set callback function to get service account id list mapped sync-agent-framework account id
464 * @param[in] callback callback function - this function is provided from sync-agent-framework
469 * @see data_connector_resource.h
472 void sync_agent_plugin_set_callback_get_account_id_list(sync_agent_get_account_id_list_cb_plugin callback);
475 * API to get max item count per folder
477 * @param[in] folder_type folder type provided plugin
479 * @return max item count on success, -1 on error
484 * @see sync_agent_plugin_get_max_item_count(int)
486 int sync_agent_plugin_get_max_item_count(int folder_type);
489 * API to get service data's available field length
491 * @param[in] field_name field_name provided data-connector plugin
492 * @param[in] child_field_name child field name provided data-connector plugin
494 * @return available_field_length on success, -1 on error
499 * @see sync_agent_plugin_get_max_field_length(int, int)
502 int sync_agent_plugin_get_max_field_length(int field_name, int child_field_name);
505 * API to get service data's available field count
507 * @param[in] field_name field_name provided data-connector plugin
508 * @param[in] child_field_name child field name provided data-connector plugin
510 * @return available_field_count on success, -1 on error
515 * @see sync_agent_plugin_get_max_field_count(int, int)
518 int sync_agent_plugin_get_max_field_count(int field_name, int child_field_name);
521 * API to get service data's available field value's domain
523 * @param[in] field_name field name provided data-connector plugin
524 * @param[in] child_field_name child field name provided data-connector plugin
525 * @param[in] str_val as returned by sync_agent_plugin_get_field_value() - when domain value is string
526 * @param[in] num_val1 as returned by sync_agent_plugin_get_field_value() - when domain value is integer (ex minimum value)
527 * @param[in] num_val2 as returned by sync_agent_plugin_get_field_value() - when domain value is integer (ex maximum value)
529 * @return 1 on success, -1 on error
534 * @see sync_agent_plugin_get_field_value(int, int, char **, int *, int *)
537 int sync_agent_plugin_get_field_value(int field_name, int child_field_name, char **str_val, int *num_val1, int *num_val2);
540 * API to get service data's available field count
542 * @param[in] feature feature provided data-connector plugin
544 * @return 1 : support, 0 : not support on success, -1 on error
549 * @see sync_agent_plugin_get_is_support_feature(int)
552 int sync_agent_plugin_get_is_support_feature(int feature);
559 #endif /* __cplusplus */
560 #endif /* DATA_CONNECTOR_INTERFACE_H_ */