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.
19 * @Common_Define_Internal.c
21 * @brief This file is the source file of implementation of defined Common structure
24 #include <sync_agent.h>
26 #include "common/common_define.h"
28 #ifndef OMADS_AGENT_LOG
30 #define LOG_TAG "OMA_DS_COMMON"
33 datastore_s *datastoreinfo_per_content_type[4];
35 datastore_info_s *create_datastore_info(char *target, char *source)
39 datastore_info_s *datastore_info = (datastore_info_s *) calloc(1, sizeof(datastore_info_s));
40 retvm_if(datastore_info == NULL, NULL, "datastore_info is NULL");
43 datastore_info->target = strdup(target);
45 datastore_info->source = strdup(source);
49 return datastore_info;
52 void free_datastore_infos(GList * datastore_infos)
55 retm_if(datastore_infos == NULL, "List is NULL");
58 for (iter = datastore_infos; iter != NULL; iter = g_list_next(iter))
59 free_datastore_info(iter->data);
61 g_list_free(datastore_infos);
66 void free_datastore_info(datastore_info_s * datastore_info)
69 retm_if(datastore_info == NULL, "pDatastoreInfo is NULL");
71 if (datastore_info->target != NULL) {
72 free(datastore_info->target);
73 datastore_info->target = NULL;
76 if (datastore_info->source != NULL) {
77 free(datastore_info->source);
78 datastore_info->source = NULL;
81 if (datastore_info->last_anchor != NULL) {
82 free(datastore_info->last_anchor);
83 datastore_info->last_anchor = NULL;
86 if (datastore_info->next_anchor != NULL) {
87 free(datastore_info->next_anchor);
88 datastore_info->next_anchor = NULL;
96 void set_datastore_info_sync_type(datastore_info_s * datastore_info, alert_type_e sync_type)
99 if (datastore_info != NULL)
100 datastore_info->sync_type = sync_type;
105 void set_datastore_info_last_anchor(datastore_info_s * datastore_info, char *last_anchor)
108 if (datastore_info != NULL) {
109 if (last_anchor != NULL)
110 datastore_info->last_anchor = strdup(last_anchor);
116 void set_datastore_info_next_anchor(datastore_info_s * datastore_info, char *next_anchor)
119 if (datastore_info != NULL) {
120 if (next_anchor != NULL)
121 datastore_info->next_anchor = strdup(next_anchor);
127 void set_datastore_info_max_obj_size(datastore_info_s * datastore_info, unsigned int max_obj_size)
130 if (datastore_info != NULL)
131 datastore_info->max_obj_size = max_obj_size;
136 changed_item_s *create_changed_item(change_type_e type, char *luid)
140 changed_item_s *changed_item = (changed_item_s *) calloc(1, sizeof(changed_item_s));
141 retvm_if(changed_item == NULL, NULL, "changed_item is NULL");
143 changed_item->change_type = type;
146 changed_item->luid = strdup(luid);
148 changed_item->content_type = NULL;
155 void set_changed_item_content_type(changed_item_s * changed_item, char *content_type)
159 retm_if(changed_item == NULL, "pChangedItem is NULL");
161 if (content_type != NULL)
162 changed_item->content_type = strdup(content_type);
167 void free_changed_item(changed_item_s * changed_item)
171 retm_if(changed_item == NULL, "pChangedItem is NULL");
173 if (changed_item->luid != NULL) {
174 free(changed_item->luid);
175 changed_item->luid = NULL;
178 if (changed_item->content_type != NULL) {
179 free(changed_item->content_type);
180 changed_item->content_type = NULL;
183 if (changed_item->data != NULL) {
184 free(changed_item->data);
185 changed_item->data = NULL;
188 if (changed_item != NULL)
194 void set_changed_item_data(changed_item_s * changed_item, char *data)
198 retm_if(changed_item == NULL, "pChangedItem is NULL");
201 changed_item->data = strdup(data);
206 void set_changed_item_index_of_datastore(changed_item_s * changed_item, unsigned int index_of_datastore)
210 retm_if(changed_item == NULL, "changed_item is NULL");
212 changed_item->index_of_datastore = index_of_datastore;
217 changed_datastore_s *create_changed_datastore(char *source, char *target, int has_number_of_changes, unsigned int number_of_changes)
221 changed_datastore_s *changed_datastore = (changed_datastore_s *) calloc(1, sizeof(changed_datastore_s));
222 retvm_if(changed_datastore == NULL, NULL, "changed_datastore is NULL");
225 changed_datastore->source = strdup(source);
227 changed_datastore->target = strdup(target);
229 changed_datastore->need_sync_command = 1;
230 changed_datastore->number_of_changes = number_of_changes;
231 changed_datastore->has_number_of_changes = has_number_of_changes;
235 return changed_datastore;
238 void free_changed_datastores(GList * changed_datastores)
242 retm_if(changed_datastores == NULL, "List is NULL");
245 for (iter = changed_datastores; iter != NULL; iter = g_list_next(iter))
246 free_changed_datastore(iter->data);
248 g_list_free(changed_datastores);
253 void free_changed_datastore(changed_datastore_s * changed_datastore)
257 retm_if(changed_datastore == NULL, "pChangedDatastore is NULL");
259 if (changed_datastore->source != NULL) {
260 free(changed_datastore->source);
261 changed_datastore->source = NULL;
264 if (changed_datastore->target != NULL) {
265 free(changed_datastore->target);
266 changed_datastore->target = NULL;
270 for (iter = changed_datastore->change_item; iter != NULL; iter = g_list_next(iter))
271 free_changed_item(iter->data);
273 g_list_free(changed_datastore->change_item);
274 changed_datastore->change_item = NULL;
276 for (iter = changed_datastore->sent_item; iter != NULL; iter = g_list_next(iter))
277 free_changed_item(iter->data);
279 g_list_free(changed_datastore->sent_item);
280 changed_datastore->sent_item = NULL;
282 if (changed_datastore != NULL)
283 free(changed_datastore);
288 void set_changed_datastore_changed_item(changed_datastore_s * changed_datastore, GList * changed_items)
292 if (changed_datastore != NULL)
293 changed_datastore->change_item = changed_items;
298 void add_changed_datastore_changed_item(changed_datastore_s * changed_datastore, changed_item_s * changed_item)
302 retm_if(changed_datastore == NULL, "changed_datastore is NULL");
304 changed_datastore->change_item = g_list_append(changed_datastore->change_item, changed_item);
309 applied_status_s *create_applied_status(char *luid, change_type_e change_type, int status)
313 applied_status_s *applied_status = (applied_status_s *) calloc(1, sizeof(applied_status_s));
314 retvm_if(applied_status == NULL, NULL, "appliedStatus is NULL");
317 applied_status->luid = strdup(luid);
319 applied_status->change_type = change_type;
320 applied_status->status = status;
324 return applied_status;
327 void free_applied_statuses(GList * applied_statuses)
331 retm_if(applied_statuses == NULL, "List is NULL");
334 for (iter = applied_statuses; iter != NULL; iter = g_list_next(iter))
335 free_applied_status(iter->data);
337 g_list_free(applied_statuses);
342 void free_applied_status(applied_status_s * applied_status)
346 retm_if(applied_status == NULL, "List is NULL");
348 if (applied_status->luid != NULL) {
349 free(applied_status->luid);
350 applied_status->luid = NULL;
353 free(applied_status);
358 sending_status_s *create_sending_status(char *source, char *target)
362 sending_status_s *sending_status = (sending_status_s *) calloc(1, sizeof(sending_status_s));
363 retvm_if(sending_status == NULL, NULL, "sending_status is NULL");
366 sending_status->source = strdup(source);
369 sending_status->target = strdup(target);
373 return sending_status;
376 void free_sending_statuses(GList * sending_statuses)
380 retm_if(sending_statuses == NULL, "List is NULL");
383 for (iter = sending_statuses; iter != NULL; iter = g_list_next(iter))
384 free_sending_status(iter->data);
386 g_list_free(sending_statuses);
391 void free_sending_status(sending_status_s * sending_status)
395 retm_if(sending_status == NULL, "pSendingStatus is NULL");
397 if (sending_status->source != NULL) {
398 free(sending_status->source);
399 sending_status->source = NULL;
402 if (sending_status->target != NULL) {
403 free(sending_status->target);
404 sending_status->target = NULL;
408 for (iter = sending_status->items; iter != NULL; iter = g_list_next(iter))
409 free_applied_status(iter->data);
411 g_list_free(sending_status->items);
413 free(sending_status);
418 void add_sending_status_applied_status(sending_status_s * sending_status, applied_status_s * applied_status)
422 retm_if(sending_status == NULL, "sending_status is NULL");
424 sending_status->items = g_list_append(sending_status->items, applied_status);
429 datastore_s *create_datastore(char *target, char *source)
433 datastore_s *datastore = (datastore_s *) calloc(1, sizeof(datastore_s));
434 retvm_if(datastore == NULL, NULL, "datastore is NULL");
437 datastore->target = strdup(target);
440 datastore->source = strdup(source);
447 void set_datastore_content_type_info(datastore_s * datastore, int datastore_id, int folder_type_id)
451 if (datastore != NULL) {
452 datastore->datastore_id = datastore_id;
453 datastore->folder_type_id = folder_type_id;
459 void set_datastore_account_info(datastore_s * datastore, char *account_id, char *account_pw)
463 if (datastore != NULL) {
464 if (account_id != NULL)
465 datastore->id = strdup(account_id);
466 if (account_pw != NULL)
467 datastore->pw = strdup(account_pw);
473 void set_datastore_client_sync_type(datastore_s * datastore, alert_type_e sync_type)
477 if (datastore != NULL)
478 datastore->client_sync_type = sync_type;
483 void set_datastore_server_sync_type(datastore_s * datastore, alert_type_e sync_type)
487 if (datastore != NULL)
488 datastore->server_sync_type = sync_type;
493 void set_datastore_client_anchor(datastore_s * datastore, char *last_anchor, char *next_anchor)
497 if (datastore != NULL) {
498 if (last_anchor != NULL)
499 datastore->last_anchor_client = strdup(last_anchor);
500 if (next_anchor != NULL)
501 datastore->next_anchor_client = strdup(next_anchor);
507 void set_datastore_server_anchor(datastore_s * datastore, char *last_anchor, char *next_anchor)
511 if (datastore != NULL) {
512 if (last_anchor != NULL)
513 datastore->last_anchor_server = strdup(last_anchor);
514 if (next_anchor != NULL)
515 datastore->next_anchor_server = strdup(next_anchor);
521 sync_result_s *create_sync_result()
525 sync_result_s *syncResult = calloc(1, sizeof(sync_result_s));
526 retvm_if(syncResult == NULL, NULL, "syncResult is NULL");
533 sync_result_s *dup_sync_result(sync_result_s * org_sync_result)
537 retvm_if(org_sync_result == NULL, NULL, "orgSyncResult is NULL");
539 sync_result_s *syn_cre_sult = calloc(1, sizeof(sync_result_s));
540 retvm_if(syn_cre_sult == NULL, NULL, "syn_cre_sult is NULL");
542 syn_cre_sult->session_result = org_sync_result->session_result;
543 syn_cre_sult->number_of_change = org_sync_result->number_of_change;
544 syn_cre_sult->received_count = org_sync_result->received_count;
545 syn_cre_sult->add_count = org_sync_result->add_count;
546 syn_cre_sult->replace_count = org_sync_result->replace_count;
547 syn_cre_sult->delete_count = org_sync_result->delete_count;
555 void set_number_of_change(sync_result_s * sync_result, unsigned int number_of_change)
559 if (sync_result != NULL)
560 sync_result->number_of_change = number_of_change;
565 void add_add_count(sync_result_s * sync_result, unsigned int add_cnt)
569 if (sync_result != NULL)
570 sync_result->add_count += add_cnt;
575 void add_receive_count(sync_result_s * sync_result, unsigned int received_count)
579 if (sync_result != NULL)
580 sync_result->received_count += received_count;
585 void add_replace_count(sync_result_s * sync_result, unsigned int replace_cnt)
589 if (sync_result != NULL)
590 sync_result->replace_count += replace_cnt;
595 void add_delete_count(sync_result_s * sync_result, unsigned int delete_cnt)
599 if (sync_result != NULL)
600 sync_result->delete_count += delete_cnt;
605 void free_pre_sync_return_obj(pre_sync_return_obj_s * pre_sync_return_obj)
609 retm_if(pre_sync_return_obj == NULL, "pre_sync_return_obj is NULL");
612 for (iter = pre_sync_return_obj->datastore_info; iter != NULL; iter = g_list_next(iter))
613 free_datastore_info(iter->data);
614 g_list_free(pre_sync_return_obj->datastore_info);
615 pre_sync_return_obj->datastore_info = NULL;
617 if (pre_sync_return_obj->dev_id != NULL) {
618 free(pre_sync_return_obj->dev_id);
619 pre_sync_return_obj->dev_id = NULL;
622 free(pre_sync_return_obj);
623 pre_sync_return_obj = NULL;
628 void free_sync_obj(sync_obj_s * sync_obj)
632 retm_if(sync_obj == NULL, "sync_obj is NULL");
635 for (iter = sync_obj->changed_datastore; iter != NULL; iter = g_list_next(iter))
636 free_changed_datastore(iter->data);
637 g_list_free(sync_obj->changed_datastore);
638 sync_obj->changed_datastore = NULL;
640 for (iter = sync_obj->sending_status; iter != NULL; iter = g_list_next(iter))
641 free_sending_status(iter->data);
642 g_list_free(sync_obj->sending_status);
643 sync_obj->sending_status = NULL;
651 void free_sync_return_obj(sync_return_obj_s * sync_return_obj)
655 retm_if(sync_return_obj == NULL, "pSyncReturnObj is NULL");
658 for (iter = sync_return_obj->changed_datastore; iter != NULL; iter = g_list_next(iter))
659 free_changed_datastore(iter->data);
660 g_list_free(sync_return_obj->changed_datastore);
661 sync_return_obj->changed_datastore = NULL;
663 for (iter = sync_return_obj->status; iter != NULL; iter = g_list_next(iter))
664 free_applied_status(iter->data);
665 g_list_free(sync_return_obj->status);
666 sync_return_obj->status = NULL;
668 free(sync_return_obj);
669 sync_return_obj = NULL;
674 void free_datastore(datastore_s * datastore)
678 retm_if(datastore == NULL, "pDatastore is NULL");
680 if (datastore->target != NULL) {
681 free(datastore->target);
682 datastore->target = NULL;
685 if (datastore->source != NULL) {
686 free(datastore->source);
687 datastore->source = NULL;
690 if (datastore->id != NULL) {
692 datastore->id = NULL;
695 if (datastore->pw != NULL) {
697 datastore->pw = NULL;
700 if (datastore->last_anchor_client != NULL) {
701 free(datastore->last_anchor_client);
702 datastore->last_anchor_client = NULL;
705 if (datastore->next_anchor_client != NULL) {
706 free(datastore->next_anchor_client);
707 datastore->next_anchor_client = NULL;
710 if (datastore->last_anchor_server != NULL) {
711 free(datastore->last_anchor_server);
712 datastore->last_anchor_server = NULL;
715 if (datastore->next_anchor_server != NULL) {
716 free(datastore->next_anchor_server);
717 datastore->next_anchor_server = NULL;
720 if (datastore->client_sync_result != NULL)
721 free(datastore->client_sync_result);
723 if (datastore->server_sync_result != NULL)
724 free(datastore->server_sync_result);
731 void free_sync_service(sync_service_s * category)
735 retm_if(category == NULL, "category is NULL");
737 if (category->src_uri != NULL)
738 free(category->src_uri);
740 if (category->tgt_uri != NULL)
741 free(category->tgt_uri);
743 if (category->id != NULL)
746 if (category->password != NULL)
747 free(category->password);