4 * Copyright (c) 2012 - 2013 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.
20 #include "cal_internal.h"
21 #include "cal_ipc_marshal.h"
24 static int __cal_ipc_unmarshal_calendar(pims_ipc_data_h ipc_data, calendar_record_h record);
25 static int __cal_ipc_marshal_calendar(const calendar_record_h record, pims_ipc_data_h ipc_data);
26 static int __cal_ipc_marshal_calendar_get_primary_id(const calendar_record_h record, unsigned int *property_id, int *id);
28 cal_ipc_marshal_record_plugin_cb_s _cal_ipc_record_calendar_plugin_cb = {
29 .unmarshal_record = __cal_ipc_unmarshal_calendar,
30 .marshal_record = __cal_ipc_marshal_calendar,
31 .get_primary_id = __cal_ipc_marshal_calendar_get_primary_id
34 static int __cal_ipc_unmarshal_calendar(pims_ipc_data_h ipc_data, calendar_record_h record)
36 cal_calendar_s* pcalendar = NULL;
37 bool bpropertyflag = false;
38 retv_if(ipc_data==NULL,CALENDAR_ERROR_NO_DATA);
39 retv_if(record==NULL,CALENDAR_ERROR_NO_DATA);
41 pcalendar = (cal_calendar_s*) record;
43 if (pcalendar->common.properties_max_count > 0)
47 // read only or primary/secondary key
48 if (_cal_ipc_unmarshal_int(ipc_data,&pcalendar->index) != CALENDAR_ERROR_NONE)
50 ERR("_cal_ipc_unmarshal fail");
51 return CALENDAR_ERROR_INVALID_PARAMETER;
53 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[10]) )
55 if (_cal_ipc_unmarshal_int(ipc_data,&pcalendar->store_type) != CALENDAR_ERROR_NONE)
57 ERR("_cal_ipc_unmarshal fail");
58 return CALENDAR_ERROR_INVALID_PARAMETER;
61 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[1]) )
63 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->uid) != CALENDAR_ERROR_NONE)
65 ERR("_cal_ipc_unmarshal fail");
66 return CALENDAR_ERROR_INVALID_PARAMETER;
70 if (_cal_ipc_unmarshal_long(ipc_data,&pcalendar->updated) != CALENDAR_ERROR_NONE)
72 ERR("_cal_ipc_unmarshal fail");
73 return CALENDAR_ERROR_INVALID_PARAMETER;
76 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[2]) )
78 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->name) != CALENDAR_ERROR_NONE)
80 ERR("_cal_ipc_unmarshal fail");
81 return CALENDAR_ERROR_INVALID_PARAMETER;
84 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[3]) )
86 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->description) != CALENDAR_ERROR_NONE)
88 ERR("_cal_ipc_unmarshal fail");
89 return CALENDAR_ERROR_INVALID_PARAMETER;
92 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[4]) )
94 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->color) != CALENDAR_ERROR_NONE)
96 ERR("_cal_ipc_unmarshal fail");
97 return CALENDAR_ERROR_INVALID_PARAMETER;
100 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[5]) )
102 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->location) != CALENDAR_ERROR_NONE)
104 ERR("_cal_ipc_unmarshal fail");
105 return CALENDAR_ERROR_INVALID_PARAMETER;
108 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[6]) )
110 if (_cal_ipc_unmarshal_int(ipc_data,&pcalendar->visibility) != CALENDAR_ERROR_NONE)
112 ERR("_cal_ipc_unmarshal fail");
113 return CALENDAR_ERROR_INVALID_PARAMETER;
116 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[7]) )
118 if (_cal_ipc_unmarshal_int(ipc_data,&pcalendar->sync_event) != CALENDAR_ERROR_NONE)
120 ERR("_cal_ipc_unmarshal fail");
121 return CALENDAR_ERROR_INVALID_PARAMETER;
124 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[8]) )
126 if (_cal_ipc_unmarshal_int(ipc_data,&pcalendar->is_deleted) != CALENDAR_ERROR_NONE)
128 ERR("_cal_ipc_unmarshal fail");
129 return CALENDAR_ERROR_INVALID_PARAMETER;
132 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[9]) )
134 if (_cal_ipc_unmarshal_int(ipc_data,&pcalendar->account_id) != CALENDAR_ERROR_NONE)
136 ERR("_cal_ipc_unmarshal fail");
137 return CALENDAR_ERROR_INVALID_PARAMETER;
140 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[11]) )
142 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->sync_data1) != CALENDAR_ERROR_NONE)
144 ERR("_cal_ipc_unmarshal fail");
145 return CALENDAR_ERROR_INVALID_PARAMETER;
148 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[12]) )
150 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->sync_data2) != CALENDAR_ERROR_NONE)
152 ERR("_cal_ipc_unmarshal fail");
153 return CALENDAR_ERROR_INVALID_PARAMETER;
156 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[13]) )
158 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->sync_data3) != CALENDAR_ERROR_NONE)
160 ERR("_cal_ipc_unmarshal fail");
161 return CALENDAR_ERROR_INVALID_PARAMETER;
164 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[14]) )
166 if (_cal_ipc_unmarshal_char(ipc_data,&pcalendar->sync_data4) != CALENDAR_ERROR_NONE)
168 ERR("_cal_ipc_unmarshal fail");
169 return CALENDAR_ERROR_INVALID_PARAMETER;
173 return CALENDAR_ERROR_NONE;
176 static int __cal_ipc_marshal_calendar(const calendar_record_h record, pims_ipc_data_h ipc_data)
178 cal_calendar_s* pcalendar = (cal_calendar_s*)record;
179 bool bpropertyflag = false;
180 retv_if(ipc_data==NULL,CALENDAR_ERROR_NO_DATA);
181 retv_if(pcalendar==NULL,CALENDAR_ERROR_NO_DATA);
183 if (_cal_ipc_marshal_record_common(&(pcalendar->common),ipc_data) != CALENDAR_ERROR_NONE)
185 ERR("_cal_ipc_marshal fail");
186 return CALENDAR_ERROR_INVALID_PARAMETER;
188 if (pcalendar->common.properties_max_count > 0)
190 bpropertyflag = true;
192 // read only or primary/secondary key
193 if (_cal_ipc_marshal_int((pcalendar->index),ipc_data) != CALENDAR_ERROR_NONE)
195 ERR("_cal_ipc_marshal fail");
196 return CALENDAR_ERROR_INVALID_PARAMETER;
198 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[10]) )
200 if (_cal_ipc_marshal_int((pcalendar->store_type),ipc_data) != CALENDAR_ERROR_NONE)
202 ERR("_cal_ipc_marshal fail");
203 return CALENDAR_ERROR_INVALID_PARAMETER;
206 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[1]) )
208 if (_cal_ipc_marshal_char((pcalendar->uid),ipc_data) != CALENDAR_ERROR_NONE)
210 ERR("_cal_ipc_marshal fail");
211 return CALENDAR_ERROR_INVALID_PARAMETER;
214 if (_cal_ipc_marshal_long((pcalendar->updated),ipc_data) != CALENDAR_ERROR_NONE)
216 ERR("_cal_ipc_marshal fail");
217 return CALENDAR_ERROR_INVALID_PARAMETER;
219 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[2]) )
221 if (_cal_ipc_marshal_char((pcalendar->name),ipc_data) != CALENDAR_ERROR_NONE)
223 ERR("_cal_ipc_marshal fail");
224 return CALENDAR_ERROR_INVALID_PARAMETER;
227 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[3]) )
229 if (_cal_ipc_marshal_char((pcalendar->description),ipc_data) != CALENDAR_ERROR_NONE)
231 ERR("_cal_ipc_marshal fail");
232 return CALENDAR_ERROR_INVALID_PARAMETER;
235 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[4]) )
237 if (_cal_ipc_marshal_char((pcalendar->color),ipc_data) != CALENDAR_ERROR_NONE)
239 ERR("_cal_ipc_marshal fail");
240 return CALENDAR_ERROR_INVALID_PARAMETER;
243 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[5]) )
245 if (_cal_ipc_marshal_char((pcalendar->location),ipc_data) != CALENDAR_ERROR_NONE)
247 ERR("_cal_ipc_marshal fail");
248 return CALENDAR_ERROR_INVALID_PARAMETER;
251 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[6]) )
253 if (_cal_ipc_marshal_int((pcalendar->visibility),ipc_data) != CALENDAR_ERROR_NONE)
255 ERR("_cal_ipc_marshal fail");
256 return CALENDAR_ERROR_INVALID_PARAMETER;
259 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[7]) )
261 if (_cal_ipc_marshal_int((pcalendar->sync_event),ipc_data) != CALENDAR_ERROR_NONE)
263 ERR("_cal_ipc_marshal fail");
264 return CALENDAR_ERROR_INVALID_PARAMETER;
267 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[8]) )
269 if (_cal_ipc_marshal_int((pcalendar->is_deleted),ipc_data) != CALENDAR_ERROR_NONE)
271 ERR("_cal_ipc_marshal fail");
272 return CALENDAR_ERROR_INVALID_PARAMETER;
275 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[9]) )
277 if (_cal_ipc_marshal_int((pcalendar->account_id),ipc_data) != CALENDAR_ERROR_NONE)
279 ERR("_cal_ipc_marshal fail");
280 return CALENDAR_ERROR_INVALID_PARAMETER;
283 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[11]) )
285 if (_cal_ipc_marshal_char((pcalendar->sync_data1),ipc_data) != CALENDAR_ERROR_NONE)
287 ERR("_cal_ipc_marshal fail");
288 return CALENDAR_ERROR_INVALID_PARAMETER;
291 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[12]) )
293 if (_cal_ipc_marshal_char((pcalendar->sync_data2),ipc_data) != CALENDAR_ERROR_NONE)
295 ERR("_cal_ipc_marshal fail");
296 return CALENDAR_ERROR_INVALID_PARAMETER;
299 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[13]) )
301 if (_cal_ipc_marshal_char((pcalendar->sync_data3),ipc_data) != CALENDAR_ERROR_NONE)
303 ERR("_cal_ipc_marshal fail");
304 return CALENDAR_ERROR_INVALID_PARAMETER;
307 if (bpropertyflag == false || CAL_IPC_CHECK_PROPERTIES_FLAG(pcalendar->common.properties_flags[14]) )
309 if (_cal_ipc_marshal_char((pcalendar->sync_data4),ipc_data) != CALENDAR_ERROR_NONE)
311 ERR("_cal_ipc_marshal fail");
312 return CALENDAR_ERROR_INVALID_PARAMETER;
316 return CALENDAR_ERROR_NONE;
319 static int __cal_ipc_marshal_calendar_get_primary_id(const calendar_record_h record, unsigned int *property_id, int *id)
321 *property_id = CAL_PROPERTY_CALENDAR_ID;
322 return calendar_record_get_int(record, *property_id, id );