4 * Copyright (c) 2010 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 #include "ctsvc_internal.h"
20 #include "ctsvc_ipc_marshal.h"
21 #include "contacts_record.h"
24 static int __ctsvc_ipc_unmarshal_person(pims_ipc_data_h ipc_data, const char *view_uri,
25 contacts_record_h record)
27 ctsvc_person_s * person_p = (ctsvc_person_s*)record;
29 RETV_IF(NULL == ipc_data, CONTACTS_ERROR_NO_DATA);
30 RETV_IF(NULL == record, CONTACTS_ERROR_NO_DATA);
33 if (ctsvc_ipc_unmarshal_bool(ipc_data, &person_p->is_favorite) != CONTACTS_ERROR_NONE)
35 if (ctsvc_ipc_unmarshal_bool(ipc_data, &person_p->has_phonenumber) != CONTACTS_ERROR_NONE)
37 if (ctsvc_ipc_unmarshal_bool(ipc_data, &person_p->has_email) != CONTACTS_ERROR_NONE)
40 if (ctsvc_ipc_unmarshal_int(ipc_data, &person_p->person_id) != CONTACTS_ERROR_NONE)
42 if (ctsvc_ipc_unmarshal_int(ipc_data, &person_p->name_contact_id) != CONTACTS_ERROR_NONE)
44 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->display_name) != CONTACTS_ERROR_NONE)
46 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->display_name_index) != CONTACTS_ERROR_NONE)
48 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->image_thumbnail_path) != CONTACTS_ERROR_NONE)
50 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->ringtone_path) != CONTACTS_ERROR_NONE)
52 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->vibration) != CONTACTS_ERROR_NONE)
54 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->message_alert) != CONTACTS_ERROR_NONE)
56 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->status) != CONTACTS_ERROR_NONE)
58 if (ctsvc_ipc_unmarshal_int(ipc_data, &person_p->link_count) != CONTACTS_ERROR_NONE)
60 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->addressbook_ids) != CONTACTS_ERROR_NONE)
62 if (ctsvc_ipc_unmarshal_int(ipc_data, &person_p->snippet_type) != CONTACTS_ERROR_NONE)
64 if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->snippet_string) != CONTACTS_ERROR_NONE)
66 if (ctsvc_ipc_unmarshal_double(ipc_data, &person_p->favorite_prio) != CONTACTS_ERROR_NONE)
69 return CONTACTS_ERROR_NONE;
72 ERR("__ctsvc_ipc_unmarshal_person() Fail");
73 return CONTACTS_ERROR_INVALID_PARAMETER;
76 static int __ctsvc_ipc_marshal_person(const contacts_record_h record,
77 pims_ipc_data_h ipc_data)
79 ctsvc_person_s *person_p = (ctsvc_person_s*)record;
81 RETV_IF(NULL == ipc_data, CONTACTS_ERROR_NO_DATA);
82 RETV_IF(person_p == NULL, CONTACTS_ERROR_NO_DATA);
85 if (ctsvc_ipc_marshal_bool((person_p->is_favorite), ipc_data) != CONTACTS_ERROR_NONE)
87 if (ctsvc_ipc_marshal_bool((person_p->has_phonenumber), ipc_data) != CONTACTS_ERROR_NONE)
89 if (ctsvc_ipc_marshal_bool((person_p->has_email), ipc_data) != CONTACTS_ERROR_NONE)
92 if (ctsvc_ipc_marshal_int((person_p->person_id), ipc_data) != CONTACTS_ERROR_NONE)
94 if (ctsvc_ipc_marshal_int((person_p->name_contact_id), ipc_data) != CONTACTS_ERROR_NONE)
96 if (ctsvc_ipc_marshal_string((person_p->display_name), ipc_data) != CONTACTS_ERROR_NONE)
98 if (ctsvc_ipc_marshal_string((person_p->display_name_index), ipc_data) != CONTACTS_ERROR_NONE)
100 if (ctsvc_ipc_marshal_string((person_p->image_thumbnail_path), ipc_data) != CONTACTS_ERROR_NONE)
102 if (ctsvc_ipc_marshal_string((person_p->ringtone_path), ipc_data) != CONTACTS_ERROR_NONE)
104 if (ctsvc_ipc_marshal_string((person_p->vibration), ipc_data) != CONTACTS_ERROR_NONE)
106 if (ctsvc_ipc_marshal_string((person_p->message_alert), ipc_data) != CONTACTS_ERROR_NONE)
108 if (ctsvc_ipc_marshal_string((person_p->status), ipc_data) != CONTACTS_ERROR_NONE)
110 if (ctsvc_ipc_marshal_int((person_p->link_count), ipc_data) != CONTACTS_ERROR_NONE)
112 if (ctsvc_ipc_marshal_string((person_p->addressbook_ids), ipc_data) != CONTACTS_ERROR_NONE)
114 if (ctsvc_ipc_marshal_int((person_p->snippet_type), ipc_data) != CONTACTS_ERROR_NONE)
116 if (ctsvc_ipc_marshal_string((person_p->snippet_string), ipc_data) != CONTACTS_ERROR_NONE)
118 if (ctsvc_ipc_marshal_double((person_p->favorite_prio), ipc_data) != CONTACTS_ERROR_NONE)
121 return CONTACTS_ERROR_NONE;
124 ERR("_ctsvc_ipc_marshal() Fail");
125 return CONTACTS_ERROR_INVALID_PARAMETER;
128 ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_person_plugin_cb = {
129 .unmarshal_record = __ctsvc_ipc_unmarshal_person,
130 .marshal_record = __ctsvc_ipc_marshal_person