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.
23 #include <sync_agent.h>
26 #include "common/dm_common.h"
27 #include "common/util/util.h"
28 #include "serviceadapter/protocolbinder/syncml_def.h"
29 #include "serviceadapter/protocolbinder/syncml_protocol_binder.h"
30 #include "serviceadapter/sa_command_internal.h"
31 #include "serviceadapter/sa_command.h"
32 #include "serviceadapter/sa_elements_internal.h"
33 #include "serviceadapter/sa_elements.h"
34 #include "serviceadapter/sa_define.h"
36 #ifndef OMADM_AGENT_LOG
38 #define LOG_TAG "OMA_DM_BINDER"
41 #define SYNC_AGENT_INIT_ESTIMATE_DOC_SIZE 10 /* TODO : remove */
43 static ProtocolVersion __get_oma_dm_protocol_version(char *verdtd);
44 static Location *__get_location(WBXMLTreeNode * node);
45 static Cred *__get_cred(WBXMLTreeNode * node);
46 static Chal *__get_chal(WBXMLTreeNode * node);
48 static sync_agent_pb_error_e __append_location_to_wbxml_node(Location * pLocation, sync_agent_pb_protocol_binder_info_s * pBinder, WBXMLTreeNode * parent_node);
49 static sync_agent_pb_error_e __append_cred_to_wbxml_node(Cred * pCred, sync_agent_pb_protocol_binder_info_s * pBinder, WBXMLTreeNode * parent_node);
50 static sync_agent_pb_error_e __append_chal_to_wbxml_node(Chal * pChal, sync_agent_pb_protocol_binder_info_s * pBinder, WBXMLTreeNode * parent_node);
52 static sync_agent_pb_error_e _syncml_binder_syncml_start_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node);
53 static sync_agent_pb_error_e _syncml_binder_header_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node);
54 static sync_agent_pb_error_e _syncml_binder_final_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node);
55 static sync_agent_pb_error_e _syncml_binder_body_start_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node);
56 static sync_agent_pb_error_e _syncml_binder_status_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node);
57 static sync_agent_pb_error_e _syncml_binder_alert_command_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node);
58 static sync_agent_pb_error_e _syncml_binder_results_command_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node);
59 static sync_agent_pb_error_e _syncml_binder_replace_command_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node);
61 static sync_agent_pb_error_e _syncml_binder_header_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
62 static sync_agent_pb_error_e _syncml_binder_results_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
63 static sync_agent_pb_error_e _syncml_binder_get_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
64 static sync_agent_pb_error_e _syncml_binder_alert_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
65 static sync_agent_pb_error_e _syncml_binder_add_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
66 static sync_agent_pb_error_e _syncml_binder_replace_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
67 static sync_agent_pb_error_e _syncml_binder_delete_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
68 static sync_agent_pb_error_e _syncml_binder_atomic_end_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
69 static sync_agent_pb_error_e _syncml_binder_atomic_start_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
70 static sync_agent_pb_error_e _syncml_binder_sequence_end_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
71 static sync_agent_pb_error_e _syncml_binder_sequence_start_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
72 static sync_agent_pb_error_e _syncml_binder_exec_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
73 static sync_agent_pb_error_e _syncml_binder_final_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
74 static sync_agent_pb_error_e _syncml_binder_status_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
75 static sync_agent_pb_error_e _syncml_binder_copy_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent);
77 const sync_agent_pb_function_info_s oma_dm_binder_function_info[] = {
78 {PE_SYNCML_START, "SyncML", _syncml_binder_syncml_start_converter_function, NULL, false},
79 {PE_SYNCML_END, "/SyncML", NULL, NULL, false},
80 {PE_HEADER, "SyncHdr", _syncml_binder_header_converter_function, _syncml_binder_header_reverse_converter_function, true},
81 {PE_BODY_START, "SyncBody", _syncml_binder_body_start_converter_function, NULL, false},
82 {PE_BODY_END, "/SyncBody", NULL, NULL, false},
83 {PE_FINAL, "Final", _syncml_binder_final_converter_function, _syncml_binder_final_reverse_converter_function, true},
84 {PE_ALERT, "Alert", _syncml_binder_alert_command_converter_function, _syncml_binder_alert_command_reverse_converter_function, true},
85 {PE_STATUS, "Status", _syncml_binder_status_converter_function, _syncml_binder_status_reverse_converter_function, true},
86 {PE_RESULTS_START, "Results", _syncml_binder_results_command_converter_function, _syncml_binder_results_command_reverse_converter_function, false},
87 {PE_RESULTS_END, "/Results", NULL, NULL, false},
88 {PE_GET, "Get", NULL, _syncml_binder_get_command_reverse_converter_function, true},
89 {PE_ADD, "Add", NULL, _syncml_binder_add_command_reverse_converter_function, true},
90 {PE_REPLACE, "Replace", _syncml_binder_replace_command_converter_function, _syncml_binder_replace_command_reverse_converter_function, true},
91 {PE_DELETE, "Delete", NULL, _syncml_binder_delete_command_reverse_converter_function, true},
92 {PE_EXEC, "Exec", NULL, _syncml_binder_exec_command_reverse_converter_function, true},
93 {PE_SEQUENCE_START, "Sequence", NULL, _syncml_binder_sequence_start_command_reverse_converter_function, false},
94 {PE_SEQUENCE_END, "/Sequence", NULL, _syncml_binder_sequence_end_command_reverse_converter_function, false},
95 {PE_ATOMIC_START, "Atomic", NULL, _syncml_binder_atomic_start_command_reverse_converter_function, false},
96 {PE_ATOMIC_END, "/Atomic", NULL, _syncml_binder_atomic_end_command_reverse_converter_function, false},
97 {PE_COPY, "Copy", NULL, _syncml_binder_copy_command_reverse_converter_function, true}
100 static sync_agent_pb_error_e __append_location_to_wbxml_node(Location * pLocation, sync_agent_pb_protocol_binder_info_s * pBinder, WBXMLTreeNode * parent_node)
103 _DEBUG_VERBOSE("start");
105 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
107 if (pLocation->locURI != NULL) {
108 WBXMLTreeNode *LocURI = sync_agent_add_child_text_node(pBinder, parent_node, ELEMENT_LOCURI, pLocation->locURI, strlen(pLocation->locURI));
109 if (LocURI == NULL) {
110 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
117 if (pLocation->locName != NULL) {
118 WBXMLTreeNode *locName = sync_agent_add_child_text_node(pBinder, parent_node, ELEMENT_LOCNAME, pLocation->locName, strlen(pLocation->locName));
119 if (locName == NULL) {
120 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
128 _DEBUG_VERBOSE("error : %d", err);
134 static sync_agent_pb_error_e __append_cred_to_wbxml_node(Cred * pCred, sync_agent_pb_protocol_binder_info_s * pBinder, WBXMLTreeNode * parent_node)
137 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
139 retvm_if((pCred) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pCred is NULL!!");
140 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
143 WBXMLTreeNode *cred_node = sync_agent_add_child_node(pBinder, parent_node, ELEMENT_CRED);
144 if (cred_node == NULL) {
145 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
149 WBXMLTreeNode *meta_node = sync_agent_add_child_node(pBinder, cred_node, ELEMENT_META);
150 if (meta_node == NULL) {
151 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
155 WBXMLTreeNode *type_node = NULL;
157 switch (pCred->type) {
158 case AUTH_TYPE_BASIC:
160 if (pCred->format == FORMAT_TYPE_BASE64) {
161 WBXMLTreeNode *format_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_FORMAT, ELEMENT_FORMAT_BASE64, strlen(ELEMENT_FORMAT_BASE64));
162 if (format_node == NULL) {
163 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
168 type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, ELEMENT_AUTH_BASIC, strlen(ELEMENT_AUTH_BASIC));
169 if (type_node == NULL) {
170 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
174 if (pCred->data != NULL) {
175 WBXMLTreeNode *type_node = sync_agent_add_child_text_node(pBinder, cred_node, ELEMENT_DATA, pCred->data, strlen(pCred->data));
176 if (type_node == NULL) {
177 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
184 if (pCred->format == FORMAT_TYPE_BASE64) {
185 WBXMLTreeNode *format_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_FORMAT, ELEMENT_FORMAT_BASE64, strlen(ELEMENT_FORMAT_BASE64));
186 if (format_node == NULL) {
187 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
192 type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, ELEMENT_AUTH_MD5, strlen(ELEMENT_AUTH_MD5));
193 if (type_node == NULL) {
194 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
198 if (pCred->data != NULL) {
199 WBXMLTreeNode *type_node = sync_agent_add_child_text_node(pBinder, cred_node, ELEMENT_DATA, pCred->data, strlen(pCred->data));
200 if (type_node == NULL) {
201 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
209 /*do not use cred element */
220 _DEBUG_VERBOSE("error : %d", err);
225 static sync_agent_pb_error_e __append_chal_to_wbxml_node(Chal * pChal, sync_agent_pb_protocol_binder_info_s * pBinder, WBXMLTreeNode * parent_node)
229 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
231 retvm_if((pChal) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pChal is NULL!!");
232 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
235 WBXMLTreeNode *chal_node = sync_agent_add_child_node(pBinder, parent_node, ELEMENT_CHAL);
236 if (chal_node == NULL) {
237 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
240 WBXMLTreeNode *meta_node = sync_agent_add_child_node(pBinder, chal_node, ELEMENT_META);
241 if (meta_node == NULL) {
242 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
246 WBXMLTreeNode *type_node = NULL;
248 switch (pChal->type) {
249 case AUTH_TYPE_BASIC:
251 if (pChal->format == FORMAT_TYPE_BASE64) {
252 WBXMLTreeNode *format_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_FORMAT, ELEMENT_FORMAT_BASE64, strlen(ELEMENT_FORMAT_BASE64));
253 if (format_node == NULL) {
254 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
259 type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, ELEMENT_AUTH_BASIC, strlen(ELEMENT_AUTH_BASIC));
260 if (type_node == NULL) {
261 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
268 if (pChal->format == FORMAT_TYPE_BASE64) {
269 WBXMLTreeNode *format_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_FORMAT, ELEMENT_FORMAT_BASE64, strlen(ELEMENT_FORMAT_BASE64));
270 if (format_node == NULL) {
271 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
276 type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, ELEMENT_AUTH_MD5, strlen(ELEMENT_AUTH_MD5));
277 if (type_node == NULL) {
278 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
282 WBXMLTreeNode *nextnonce_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_NEXTNONCE, pChal->nonce_plain, strlen(pChal->nonce_plain));
283 if (nextnonce_node == NULL) {
284 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
291 if (pChal->format == FORMAT_TYPE_BASE64) {
292 WBXMLTreeNode *format_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_FORMAT, ELEMENT_FORMAT_BASE64, strlen(ELEMENT_FORMAT_BASE64));
293 if (format_node == NULL) {
294 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
299 type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, ELEMENT_AUTH_HMAC, strlen(ELEMENT_AUTH_HMAC));
300 if (type_node == NULL) {
301 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
305 WBXMLTreeNode *nextnonce_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_NEXTNONCE, pChal->nonce_plain, strlen(pChal->nonce_plain));
306 if (nextnonce_node == NULL) {
307 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
320 _DEBUG_VERBOSE("error : %d", err);
325 static sync_agent_pb_error_e _syncml_binder_syncml_start_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node)
329 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
331 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
332 WBXMLTreeNode *syncml_node = sync_agent_create_node(pBinder, ELEMENT_SYNCML);
333 if (syncml_node == NULL) {
334 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
338 *ppWbxml_dom_node = syncml_node;
344 sync_agent_destroy_wbxml_node(syncml_node);
345 _DEBUG_TRACE("error :%d", err);
350 static sync_agent_pb_error_e _syncml_binder_header_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node)
354 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
356 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
357 SyncHdr *pSyncHdr = (SyncHdr *) pContent;
359 /* add SyncHdr, VerDTD, VerProto node */
360 WBXMLTreeNode *synchdr_node = NULL;
361 synchdr_node = sync_agent_create_node(pBinder, ELEMENT_SYNCHDR);
362 if (synchdr_node == NULL) {
363 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
367 char *verDTD = ELEMENT_VERDTD;
368 char *verProto = ELEMENT_VERPROTO;
370 char *verDTD_data = NULL;
371 char *verProto_data = NULL;
372 if (pSyncHdr->version == VERSION_10) {
373 verDTD_data = ELEMENT_VERDTD_10;
374 verProto_data = ELEMENT_VERPROTO_10;
375 } else if (pSyncHdr->version == VERSION_11) {
376 verDTD_data = ELEMENT_VERDTD_11;
377 verProto_data = ELEMENT_VERPROTO_11;
378 } else if (pSyncHdr->version == VERSION_12) {
379 verDTD_data = ELEMENT_VERDTD_12;
380 verProto_data = ELEMENT_VERPROTO_12;
383 if (verDTD_data == NULL || verProto_data == NULL) {
384 err = SYNC_AGENT_PB_RETURN_NOT_DEFINED;
388 WBXMLTreeNode *verdtd_node = sync_agent_add_child_text_node(pBinder, synchdr_node, verDTD, verDTD_data, strlen(verDTD_data));
389 if (verdtd_node == NULL) {
390 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
394 WBXMLTreeNode *verProto_node = sync_agent_add_child_text_node(pBinder, synchdr_node, verProto, verProto_data, strlen(verProto_data));
395 if (verProto_node == NULL) {
396 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
401 WBXMLTreeNode *sessionID_node = NULL;
402 if (pSyncHdr->sessionID != NULL) {
403 sessionID_node = sync_agent_add_child_text_node(pBinder, synchdr_node, ELEMENT_SESSIONID, pSyncHdr->sessionID, strlen(pSyncHdr->sessionID));
405 sessionID_node = sync_agent_add_child_node(pBinder, synchdr_node, ELEMENT_SESSIONID);
408 if (sessionID_node == NULL) {
409 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
414 char *msgID_data = g_strdup_printf("%u", pSyncHdr->messageID);
415 if (msgID_data == NULL) {
416 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
419 WBXMLTreeNode *msgID_node = sync_agent_add_child_text_node(pBinder, synchdr_node, ELEMENT_MSGID, msgID_data, strlen(msgID_data));
420 str_free(&msgID_data);
421 if (msgID_node == NULL) {
422 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
426 WBXMLTreeNode *target_node = sync_agent_add_child_node(pBinder, synchdr_node, ELEMENT_TARGET);
427 if (target_node == NULL) {
428 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
432 err = __append_location_to_wbxml_node(pSyncHdr->target, pBinder, target_node);
433 if (err != SYNC_AGENT_PB_RETURN_OK)
436 WBXMLTreeNode *source_node = sync_agent_add_child_node(pBinder, synchdr_node, ELEMENT_SOURCE);
437 if (source_node == NULL) {
438 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
442 err = __append_location_to_wbxml_node(pSyncHdr->source, pBinder, source_node);
443 if (err != SYNC_AGENT_PB_RETURN_OK)
446 if (pSyncHdr->responseURI) {
447 WBXMLTreeNode *respuri_node = sync_agent_add_child_text_node(pBinder, synchdr_node, ELEMENT_RESPURI, pSyncHdr->responseURI, strlen(pSyncHdr->responseURI));
448 if (respuri_node == NULL) {
449 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
454 if (pSyncHdr->cred != NULL) {
455 err = __append_cred_to_wbxml_node(pSyncHdr->cred, pBinder, synchdr_node);
456 if (err != SYNC_AGENT_PB_RETURN_OK)
460 char *meta = ELEMENT_META;
461 if (pSyncHdr->maxmsgsize != 0 || pSyncHdr->maxobjsize != 0) {
462 WBXMLTreeNode *meta_node = sync_agent_add_child_node(pBinder, synchdr_node, meta);
463 if (meta_node == NULL) {
464 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
468 unsigned int maxmsgsize = pSyncHdr->maxmsgsize;
469 unsigned int maxobjsize = pSyncHdr->maxobjsize;
471 if (maxmsgsize != 0) {
472 char *str_maxmsgsize = g_strdup_printf("%u", maxmsgsize);
473 if (str_maxmsgsize == NULL) {
474 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
478 WBXMLTreeNode *maxmsgsize_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_MAXMSGSIZE, str_maxmsgsize, strlen(str_maxmsgsize));
479 str_free(&str_maxmsgsize);
480 if (maxmsgsize_node == NULL) {
481 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
486 if (maxobjsize != 0) {
487 char *str_maxobjsize = g_strdup_printf("%u", maxobjsize);
488 if (str_maxobjsize == NULL) {
489 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
493 WBXMLTreeNode *maxmsgsize_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_MAXOBJSIZE, str_maxobjsize, strlen(str_maxobjsize));
494 str_free(&str_maxobjsize);
495 if (maxmsgsize_node == NULL) {
496 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
502 *ppWbxml_dom_node = synchdr_node;
508 sync_agent_destroy_wbxml_node(synchdr_node);
509 _DEBUG_TRACE("error :%d", err);
514 static sync_agent_pb_error_e _syncml_binder_final_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node)
519 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
521 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
523 WBXMLTreeNode *final_node = sync_agent_create_node(pBinder, ELEMENT_FINAL);
524 if (final_node == NULL) {
525 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
529 *ppWbxml_dom_node = final_node;
535 sync_agent_destroy_wbxml_node(final_node);
536 _DEBUG_TRACE("error :%d", err);
541 static sync_agent_pb_error_e _syncml_binder_body_start_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node)
545 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
547 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
549 WBXMLTreeNode *syncbody_node = sync_agent_create_node(pBinder, ELEMENT_SYNCBODY);
550 if (syncbody_node == NULL) {
551 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
555 *ppWbxml_dom_node = syncbody_node;
561 sync_agent_destroy_wbxml_node(syncbody_node);
562 _DEBUG_TRACE("error :%d", err);
567 static sync_agent_pb_error_e _syncml_binder_status_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node)
571 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
573 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
575 Status *pStatus = (Status *) pContent;
576 assert(pStatus != NULL);
578 CommandType type = pStatus->type;
580 WBXMLTreeNode *status_node = NULL;
581 status_node = sync_agent_create_node(pBinder, ELEMENT_STATUS);
582 if (status_node == NULL) {
583 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
587 unsigned int cmdID = pStatus->cmdID;
588 char *str_cmdID = g_strdup_printf("%u", cmdID);
589 if (str_cmdID == NULL) {
590 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
594 WBXMLTreeNode *cmdid_node = sync_agent_add_child_text_node(pBinder, status_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
595 str_free(&str_cmdID);
596 if (cmdid_node == NULL) {
597 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
601 unsigned int msgRef = pStatus->msgRef;
602 char *str_msgRef = g_strdup_printf("%u", msgRef);
603 if (str_msgRef == NULL) {
604 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
608 WBXMLTreeNode *msgref_node = sync_agent_add_child_text_node(pBinder, status_node, ELEMENT_MSGREF, str_msgRef, strlen(str_msgRef));
609 str_free(&str_msgRef);
610 if (msgref_node == NULL) {
611 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
615 unsigned int cmdRef = pStatus->cmdRef;
616 char *str_cmdRef = g_strdup_printf("%u", cmdRef);
617 if (str_cmdRef == NULL) {
618 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
622 WBXMLTreeNode *cmdref_node = sync_agent_add_child_text_node(pBinder, status_node, ELEMENT_CMDREF, str_cmdRef, strlen(str_cmdRef));
623 str_free(&str_cmdRef);
624 if (cmdref_node == NULL) {
625 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
629 char *str_command = NULL;
631 case COMMAND_TYPE_ALERT:
633 str_command = ELEMENT_ALERT;
636 case COMMAND_TYPE_HEADER:
638 str_command = ELEMENT_SYNCHDR;
641 case COMMAND_TYPE_ADD:
643 str_command = ELEMENT_ADD;
646 case COMMAND_TYPE_REPLACE:
648 str_command = ELEMENT_REPLACE;
651 case COMMAND_TYPE_DELETE:
653 str_command = ELEMENT_DELETE;
656 case COMMAND_TYPE_GET:
658 str_command = ELEMENT_GET;
661 case COMMAND_TYPE_RESULTS:
663 str_command = ELEMENT_RESULTS;
666 case COMMAND_TYPE_EXEC:
668 str_command = ELEMENT_EXEC;
671 case COMMAND_TYPE_SEQUENCE:
673 str_command = ELEMENT_SEQUENCE;
676 case COMMAND_TYPE_ATOMIC:
678 str_command = ELEMENT_ATOMIC;
685 if (str_command == NULL) {
686 err = SYNC_AGENT_PB_RETURN_NOT_DEFINED;
690 WBXMLTreeNode *command_node = sync_agent_add_child_text_node(pBinder, status_node, ELEMENT_CMD, str_command, strlen(str_command));
691 if (command_node == NULL) {
692 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
696 if (pStatus->targetRef != NULL) {
697 WBXMLTreeNode *targetref_node = sync_agent_add_child_text_node(pBinder, status_node, ELEMENT_TARGETREF, pStatus->targetRef->locURI, strlen(pStatus->targetRef->locURI));
698 if (targetref_node == NULL) {
699 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
704 if (pStatus->sourceRef != NULL) {
705 WBXMLTreeNode *sourceref_node = sync_agent_add_child_text_node(pBinder, status_node, ELEMENT_SOURCEREF, pStatus->sourceRef->locURI, strlen(pStatus->sourceRef->locURI));
706 if (sourceref_node == NULL) {
707 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
712 if (pStatus->cred != NULL) {
713 /*err = append_cred_to_wbxml_node(pStatus->cred, pBinder, status_node);
714 * if(err != SYNC_AGENT_PB_RETURN_OK)
719 if (pStatus->chal != NULL) {
720 err = __append_chal_to_wbxml_node(pStatus->chal, pBinder, status_node);
721 if (err != SYNC_AGENT_PB_RETURN_OK)
726 WBXMLTreeNode *data_node = sync_agent_add_child_text_node(pBinder, status_node, ELEMENT_DATA, pStatus->data, strlen(pStatus->data));
727 if (data_node == NULL) {
728 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
732 if (type == COMMAND_TYPE_ALERT) {
735 if (pStatus->items != NULL) {
736 for (Iter = pStatus->items; Iter != NULL; Iter = g_list_next(Iter)) {
739 WBXMLTreeNode *item_node = sync_agent_add_child_node(pBinder, status_node, ELEMENT_ITEM);
740 if (item_node == NULL) {
741 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
745 data = item->private.data;
747 WBXMLTreeNode *item_data_node = sync_agent_add_child_text_node(pBinder, item_node, ELEMENT_DATA, data, strlen(data));
748 if (item_data_node == NULL) {
749 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
758 *ppWbxml_dom_node = status_node;
764 sync_agent_destroy_wbxml_node(status_node);
766 _DEBUG_TRACE("error :%d", err);
771 static sync_agent_pb_error_e _syncml_binder_alert_command_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node)
776 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
778 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
780 Command *pCommand = (Command *) pContent;
781 CommandAlertPrivate *pAlert = (CommandAlertPrivate *) (&(pCommand->private));
782 WBXMLTreeNode *alert_node = NULL;
784 if (pAlert == NULL) {
785 err = SYNC_AGENT_PB_RETURN_NOT_DEFINED;
786 _DEBUG_TRACE("pAlert is not defined");
790 if (pAlert->type == ALERT_UNKNOWN) {
792 err = SYNC_AGENT_PB_RETURN_UNKNOWN_ERROR;
793 _DEBUG_TRACE("type is unknown");
797 alert_node = sync_agent_create_node(pBinder, ELEMENT_ALERT);
798 if (alert_node == NULL) {
799 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
803 char *str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
804 if (str_cmdID == NULL) {
805 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
809 WBXMLTreeNode *cmdid_node = sync_agent_add_child_text_node(pBinder, alert_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
810 str_free(&str_cmdID);
811 if (cmdid_node == NULL) {
812 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
816 /* if(pCommand->cred){
817 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, alert_node);
818 if(err != SYNC_AGENT_PB_RETURN_OK)
822 char *str_alert_type = g_strdup_printf("%d", pAlert->type);
823 if (str_alert_type == NULL) {
824 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
828 WBXMLTreeNode *data_node = sync_agent_add_child_text_node(pBinder, alert_node, ELEMENT_DATA, str_alert_type, strlen(str_alert_type));
829 str_free(&str_alert_type);
830 if (data_node == NULL) {
831 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
835 if (pAlert->Correlator != NULL) {
836 char *pCorrelator = g_strdup(pAlert->Correlator);
837 if (pCorrelator == NULL) {
838 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
841 WBXMLTreeNode *correlator_node = sync_agent_add_child_text_node(pBinder, alert_node, ELEMENT_CORRELATOR, pCorrelator, strlen(pCorrelator));
842 str_free(&pCorrelator);
843 if (correlator_node == NULL) {
844 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
851 for (Iter = pAlert->items; Iter != NULL; Iter = g_list_next(Iter)) {
853 WBXMLTreeNode *item_node = sync_agent_add_child_node(pBinder, alert_node, ELEMENT_ITEM);
854 if (item_node == NULL) {
855 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
859 if (item->source != NULL) {
860 WBXMLTreeNode *source_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_SOURCE);
861 if (source_node == NULL) {
862 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
865 err = __append_location_to_wbxml_node(item->source, pBinder, source_node);
866 if (err != SYNC_AGENT_PB_RETURN_OK)
869 if (item->target != NULL) {
870 WBXMLTreeNode *target_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_TARGET);
871 if (target_node == NULL) {
872 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
875 err = __append_location_to_wbxml_node(item->target, pBinder, target_node);
876 if (err != SYNC_AGENT_PB_RETURN_OK)
880 if (item->format != NULL || item->contenttype != NULL) {
881 WBXMLTreeNode *meta_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_META);
882 if (meta_node == NULL) {
883 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
886 if (item->format != NULL) {
887 WBXMLTreeNode *type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_FORMAT, item->format, strlen(item->format));
888 if (type_node == NULL) {
889 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
893 if (item->contenttype != NULL) {
894 WBXMLTreeNode *type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, item->contenttype, strlen(item->contenttype));
895 if (type_node == NULL) {
896 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
899 if (item->moreData != 0) {
900 if (item->size > 0) {
901 char *str_size = g_strdup_printf("%u", item->size);
902 if (str_size == NULL) {
903 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
907 WBXMLTreeNode *size_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_SIZE, str_size, strlen(str_size));
909 if (size_node == NULL) {
910 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
919 if (item->dataType == ITEM_DATA) {
920 if (item->private.data != NULL) {
921 WBXMLTreeNode *data_node = sync_agent_add_child_text_node(pBinder, item_node, ELEMENT_DATA, item->private.data, strlen(item->private.data));
922 //WBXMLTreeNode* data_node = sync_agent_add_child_cdata_node(pBinder, item_node, ELEMENT_DATA, item->private.data, strlen(item->private.data));
923 if (data_node == NULL) {
924 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
930 if (item->moreData != 0) {
931 WBXMLTreeNode *data_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_MOREDATA);
932 if (data_node == NULL) {
933 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
939 *ppWbxml_dom_node = alert_node;
945 sync_agent_destroy_wbxml_node(alert_node);
946 _DEBUG_TRACE("error :%d", err);
951 static sync_agent_pb_error_e _syncml_binder_results_command_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node)
956 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
958 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
960 Command *pCommand = (Command *) pContent;
961 CommandResultsPrivate *pResults = (CommandResultsPrivate *) (&(pCommand->private));
962 WBXMLTreeNode *results_node = NULL;
963 if (pResults == NULL) {
964 err = SYNC_AGENT_PB_RETURN_NOT_DEFINED;
965 _DEBUG_TRACE("pResults is not defined");
969 results_node = sync_agent_create_node(pBinder, ELEMENT_RESULTS);
970 if (results_node == NULL) {
971 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
975 char *str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
976 if (str_cmdID == NULL) {
977 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
980 WBXMLTreeNode *cmdid_node = sync_agent_add_child_text_node(pBinder, results_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
981 str_free(&str_cmdID);
982 if (cmdid_node == NULL) {
983 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
987 if (pResults->msgRef != 0) {
988 char *str_msgRef = g_strdup_printf("%u", pResults->msgRef);
989 if (str_msgRef == NULL) {
990 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
993 WBXMLTreeNode *msgref_node = sync_agent_add_child_text_node(pBinder, results_node, ELEMENT_MSGREF, str_msgRef, strlen(str_msgRef));
994 str_free(&str_msgRef);
995 if (msgref_node == NULL) {
996 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1001 char *str_cmdRef = g_strdup_printf("%u", pResults->cmdRef);
1002 if (str_cmdRef == NULL) {
1003 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1006 WBXMLTreeNode *msgref_node = sync_agent_add_child_text_node(pBinder, results_node, ELEMENT_CMDREF, str_cmdRef, strlen(str_cmdRef));
1007 str_free(&str_cmdRef);
1008 if (msgref_node == NULL) {
1009 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1013 /* if(content_type){
1014 WBXMLTreeNode * meta_node = sync_agent_add_child_node(pBinder, results_node, ELEMENT_META);
1015 sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, content_type, strlen(content_type));
1018 if (pResults->targetRef != NULL) {
1019 WBXMLTreeNode *targetref_node = sync_agent_add_child_text_node(pBinder, results_node, ELEMENT_TARGETREF, pResults->targetRef->locURI, strlen(pResults->targetRef->locURI));
1020 if (targetref_node == NULL) {
1021 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1028 for (Iter = pResults->items; Iter != NULL; Iter = g_list_next(Iter)) {
1029 item = (Iter->data);
1030 WBXMLTreeNode *item_node = sync_agent_add_child_node(pBinder, results_node, ELEMENT_ITEM);
1031 if (item_node == NULL) {
1032 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1035 if (item->source != NULL) {
1036 WBXMLTreeNode *source_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_SOURCE);
1037 if (source_node == NULL) {
1038 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1041 err = __append_location_to_wbxml_node(item->source, pBinder, source_node);
1042 if (err != SYNC_AGENT_PB_RETURN_OK)
1045 if (item->target != NULL) {
1046 WBXMLTreeNode *target_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_TARGET);
1047 if (target_node == NULL) {
1048 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1051 err = __append_location_to_wbxml_node(item->target, pBinder, target_node);
1052 if (err != SYNC_AGENT_PB_RETURN_OK)
1056 if (item->format != NULL || item->contenttype != NULL) {
1057 WBXMLTreeNode *meta_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_META);
1058 if (meta_node == NULL) {
1059 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1062 if (item->format != NULL) {
1063 WBXMLTreeNode *type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_FORMAT, item->format, strlen(item->format));
1064 if (type_node == NULL) {
1065 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1069 if (item->contenttype != NULL) {
1070 WBXMLTreeNode *type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, item->contenttype, strlen(item->contenttype));
1071 if (type_node == NULL) {
1072 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1075 if (item->moreData != 0) {
1076 if (item->size > 0) {
1077 char *str_size = g_strdup_printf("%u", item->size);
1078 WBXMLTreeNode *size_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_SIZE, str_size, strlen(str_size));
1079 str_free(&str_size);
1080 if (size_node == NULL) {
1081 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1088 if (item->dataType == ITEM_DATA) {
1089 if (item->private.data != NULL) {
1090 WBXMLTreeNode *data_node = sync_agent_add_child_text_node(pBinder, item_node, ELEMENT_DATA, item->private.data, strlen(item->private.data));
1091 //WBXMLTreeNode* data_node = sync_agent_add_child_cdata_node(pBinder, item_node, ELEMENT_DATA, item->private.data, strlen(item->private.data));
1092 if (data_node == NULL) {
1093 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1099 if (item->moreData != 0) {
1100 WBXMLTreeNode *data_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_MOREDATA);
1101 if (data_node == NULL) {
1102 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1108 *ppWbxml_dom_node = results_node;
1114 sync_agent_destroy_wbxml_node(results_node);
1115 _DEBUG_TRACE("error :%d", err);
1120 static sync_agent_pb_error_e _syncml_binder_replace_command_converter_function(sync_agent_pb_protocol_binder_info_s * pBinder, Content_Ptr pContent, WBXMLTreeNode ** ppWbxml_dom_node)
1124 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pBinder is NULL!!");
1126 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
1128 Command *pCommand = (Command *) pContent;
1129 CommandChangePrivate *pChange = (CommandChangePrivate *) (&(pCommand->private));
1131 if (pChange == NULL) {
1132 err = SYNC_AGENT_PB_RETURN_NOT_DEFINED;
1133 _DEBUG_TRACE("pChange is not defined");
1138 WBXMLTreeNode *replace_node = NULL;
1139 replace_node = sync_agent_create_node(pBinder, ELEMENT_REPLACE);
1140 if (replace_node == NULL) {
1141 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1145 char *str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
1146 if (str_cmdID == NULL) {
1147 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1150 WBXMLTreeNode *cmdid_node = sync_agent_add_child_text_node(pBinder, replace_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
1151 str_free(&str_cmdID);
1152 if (cmdid_node == NULL) {
1153 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1159 for (Iter = pChange->items; Iter != NULL; Iter = g_list_next(Iter)) {
1160 item = (Iter->data);
1161 WBXMLTreeNode *item_node = sync_agent_add_child_node(pBinder, replace_node, ELEMENT_ITEM);
1162 if (item_node == NULL) {
1163 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1166 if (item->source != NULL) {
1167 WBXMLTreeNode *source_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_SOURCE);
1168 if (source_node == NULL) {
1169 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1172 err = __append_location_to_wbxml_node(item->source, pBinder, source_node);
1173 if (err != SYNC_AGENT_PB_RETURN_OK)
1176 if (item->target != NULL) {
1177 WBXMLTreeNode *target_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_TARGET);
1178 if (target_node == NULL) {
1179 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1182 err = __append_location_to_wbxml_node(item->target, pBinder, target_node);
1183 if (err != SYNC_AGENT_PB_RETURN_OK)
1186 if (item->format != NULL || item->contenttype != NULL) {
1187 WBXMLTreeNode *meta_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_META);
1188 if (meta_node == NULL) {
1189 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1192 if (item->format != NULL) {
1193 WBXMLTreeNode *type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_FORMAT, item->format, strlen(item->format));
1194 if (type_node == NULL) {
1195 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1199 if (item->contenttype != NULL) {
1200 WBXMLTreeNode *type_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_TYPE, item->contenttype, strlen(item->contenttype));
1201 if (type_node == NULL) {
1202 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1205 if (item->moreData != 0) {
1206 if (item->size > 0) {
1207 char *str_size = g_strdup_printf("%u", item->size);
1208 WBXMLTreeNode *size_node = sync_agent_add_child_text_node(pBinder, meta_node, ELEMENT_SIZE, str_size, strlen(str_size));
1209 str_free(&str_size);
1210 if (size_node == NULL) {
1211 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1218 if (item->dataType == ITEM_DATA) {
1219 if (item->private.data != NULL) {
1220 //WBXMLTreeNode* data_node = sync_agent_add_child_cdata_node(pBinder, item_node, ELEMENT_DATA, item->private.data, strlen(item->private.data));
1221 WBXMLTreeNode *data_node = sync_agent_add_child_text_node(pBinder, item_node, ELEMENT_DATA, item->private.data, strlen(item->private.data));
1222 if (data_node == NULL) {
1223 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1229 if (item->moreData != 0) {
1230 WBXMLTreeNode *data_node = sync_agent_add_child_node(pBinder, item_node, ELEMENT_MOREDATA);
1231 if (data_node == NULL) {
1232 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1238 *ppWbxml_dom_node = replace_node;
1244 sync_agent_destroy_wbxml_node(replace_node);
1245 _DEBUG_TRACE("error :%d", err);
1250 static ProtocolVersion __get_oma_dm_protocol_version(char *verdtd)
1254 retvm_if((verdtd) == NULL, VERSION_12, "verdtd is NULL!!");
1256 ProtocolVersion protocol_version = VERSION_UNKNOWN;
1257 if (strcmp(verdtd, ELEMENT_VERDTD_12) == 0) {
1258 protocol_version = VERSION_12;
1259 } else if (strcmp(verdtd, ELEMENT_VERDTD_11) == 0) {
1260 protocol_version = VERSION_11;
1261 } else if (strcmp(verdtd, ELEMENT_VERDTD_10) == 0) {
1262 protocol_version = VERSION_10;
1266 return protocol_version;
1269 static Location *__get_location(WBXMLTreeNode * node)
1274 retvm_if((node) == NULL, NULL, "node is NULL!!");
1275 DM_ERROR ret = DM_OK;
1276 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
1277 Location *pLocation = NULL;
1279 WBXMLTreeNode *child = NULL;
1280 const char *child_name = NULL;
1282 char *locURI = NULL;
1283 char *locName = NULL;
1284 /* get first child : required LocURI */
1285 child = node->children;
1287 child_name = (const char *)wbxml_tag_get_xml_name(child->name);
1288 if (strcmp(child_name, ELEMENT_LOCURI) == 0) {
1289 err = sync_agent_get_text_from_node(child, &locURI);
1290 if (err != SYNC_AGENT_PB_RETURN_OK) {
1298 /* get second child : optional LocName */
1299 child = child->next;
1300 if (child != NULL) {
1301 child_name = (const char *)wbxml_tag_get_xml_name(child->name);
1302 if (strcmp(child_name, ELEMENT_LOCNAME) == 0) {
1303 err = sync_agent_get_text_from_node(child, &locName);
1304 if (err != SYNC_AGENT_PB_RETURN_OK)
1312 ret = create_location(locURI, locName, &pLocation);
1321 _DEBUG_VERBOSE("error : %d", ret);
1322 if (pLocation != NULL) {
1323 free_location(pLocation);
1331 static Cred *__get_cred(WBXMLTreeNode * node)
1335 retvm_if((node) == NULL, NULL, "node is NULL!!");
1337 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
1342 char *format = NULL;
1344 WBXMLTreeNode *child = NULL;
1345 const char *child_xml_name = NULL;
1346 for (child = node->children; child != NULL; child = child->next) {
1347 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
1349 if (strcmp(child_xml_name, ELEMENT_META) == 0) {
1350 WBXMLTreeNode *grand_child = child->children;
1351 const char *grand_child_xml_name = NULL;
1352 grand_child_xml_name = (const char *)wbxml_tag_get_xml_name(grand_child->name);
1354 if (strcmp(grand_child_xml_name, ELEMENT_TYPE) == 0) {
1355 err = sync_agent_get_text_from_node(grand_child, &type);
1356 if (err != SYNC_AGENT_PB_RETURN_OK) {
1359 _DEBUG_VERBOSE("Type = [%s]", type);
1360 } else if (strcmp(grand_child_xml_name, ELEMENT_FORMAT) == 0) {
1361 err = sync_agent_get_text_from_node(grand_child, &format);
1362 if (err != SYNC_AGENT_PB_RETURN_OK) {
1365 _DEBUG_VERBOSE("Type = [%s]", format);
1367 } else if (strcmp(child_xml_name, ELEMENT_DATA) == 0) {
1368 err = sync_agent_get_text_from_node(child, &data);
1369 if (err != SYNC_AGENT_PB_RETURN_OK) {
1372 _DEBUG_VERBOSE("Data = [%s]", data);
1376 cred = create_credwithdata(converttoauthtype(type), data);
1381 /*all auth type base 64 */
1382 set_credformattype(cred, FORMAT_TYPE_BASE64);
1383 _DEBUG_VERBOSE("base 64 format");
1389 _DEBUG_VERBOSE("error");
1396 static Chal *__get_chal(WBXMLTreeNode * node)
1400 retvm_if((node) == NULL, NULL, "node is NULL!!");
1402 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
1404 Chal *chal = (Chal *) calloc(1, sizeof(Chal));
1406 _DEBUG_VERBOSE("alloc fail");
1410 WBXMLTreeNode *chal_child = node->children;
1412 WBXMLTreeNode *meta_child = NULL;
1413 const char *meta_child_xml_name = NULL;
1414 for (meta_child = chal_child->children; meta_child != NULL; meta_child = meta_child->next) {
1415 meta_child_xml_name = (const char *)wbxml_tag_get_xml_name(meta_child->name);
1417 if (strcmp(meta_child_xml_name, ELEMENT_TYPE) == 0) {
1419 err = sync_agent_get_text_from_node(meta_child, &type);
1420 if (err != SYNC_AGENT_PB_RETURN_OK) {
1423 _DEBUG_VERBOSE("Type = [%s]", type);
1425 chal->type = converttoauthtype(type);
1426 } else if (strcmp(meta_child_xml_name, ELEMENT_FORMAT) == 0) {
1427 char *format = NULL;
1428 err = sync_agent_get_text_from_node(meta_child, &format);
1429 if (err != SYNC_AGENT_PB_RETURN_OK) {
1432 _DEBUG_VERBOSE("Format = [%s]", format);
1434 chal->format = converttoformattype(format);
1435 } else if (strcmp(meta_child_xml_name, "NextNonce") == 0) {
1436 char *nextnonce = NULL;
1437 unsigned int nonce_len = 0;
1438 err = sync_agent_get_binary_from_node(meta_child, &nextnonce, &nonce_len);
1439 if (err != SYNC_AGENT_PB_RETURN_OK) {
1442 _DEBUG_VERBOSE("NextNonce =[%s] ", nextnonce);
1443 if (chal->format == FORMAT_TYPE_BASE64 && chal->type == AUTH_TYPE_BASIC) {
1444 chal->nonce_b64 = strdup(nextnonce);
1445 } else if (chal->format == FORMAT_TYPE_BASE64 && (chal->type == AUTH_TYPE_MD5 || chal->type == AUTH_TYPE_HMAC)) {
1446 chal->nonce_plain = (char *)calloc(1, nonce_len + 1);
1447 if (chal->nonce_plain == NULL) {
1448 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1451 memcpy(chal->nonce_plain, nextnonce, nonce_len);
1452 chal->nonce_plain[nonce_len] = '\0';
1454 chal->nonce_length = nonce_len;
1462 _DEBUG_VERBOSE("error ");
1468 static sync_agent_pb_error_e _syncml_binder_header_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
1472 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
1474 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
1476 /* get data from dom tree */
1477 SyncHdr *pSyncHdr = (SyncHdr *) calloc(1, sizeof(SyncHdr));
1478 if (pSyncHdr == NULL) {
1479 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1480 _DEBUG_TRACE("pSyncHdr is null");
1484 WBXMLTreeNode *child = NULL;
1485 const char *child_xml_name = NULL;
1486 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
1487 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
1489 if (strcmp(child_xml_name, ELEMENT_VERDTD) == 0) {
1490 char *verdtd = NULL;
1491 err = sync_agent_get_text_from_node(child, &verdtd);
1492 if (err != SYNC_AGENT_PB_RETURN_OK) {
1495 _DEBUG_TRACE("VerDTD = [%s]", verdtd);
1497 pSyncHdr->version = __get_oma_dm_protocol_version(verdtd);
1498 } else if (strcmp(child_xml_name, ELEMENT_SESSIONID) == 0) {
1499 char *sessionID = NULL;
1500 err = sync_agent_get_text_from_node(child, &sessionID);
1501 if (err != SYNC_AGENT_PB_RETURN_OK) {
1504 _DEBUG_TRACE("SessionID = [%s]", sessionID);
1506 if (sessionID != NULL) {
1507 pSyncHdr->sessionID = strdup(sessionID);
1509 pSyncHdr->sessionID = NULL;
1511 } else if (strcmp(child_xml_name, ELEMENT_MSGID) == 0) {
1513 err = sync_agent_get_text_from_node(child, &msgID);
1514 if (err != SYNC_AGENT_PB_RETURN_OK) {
1517 _DEBUG_TRACE("MsgID = [%s]", msgID);
1519 pSyncHdr->messageID = atoi(msgID);
1520 } else if (strcmp(child_xml_name, ELEMENT_TARGET) == 0) {
1521 Location *pTargetLocation = __get_location(child);
1522 if (pTargetLocation == NULL) {
1523 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1526 if (pTargetLocation != NULL)
1527 pSyncHdr->target = pTargetLocation;
1528 } else if (strcmp(child_xml_name, ELEMENT_SOURCE) == 0) {
1529 Location *pSourceLocation = __get_location(child);
1530 if (pSourceLocation == NULL) {
1531 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1534 if (pSourceLocation != NULL)
1535 pSyncHdr->source = pSourceLocation;
1536 } else if (strcmp(child_xml_name, ELEMENT_RESPURI) == 0) {
1537 char *resp_uri = NULL;
1538 err = sync_agent_get_text_from_node(child, &resp_uri);
1539 if (err != SYNC_AGENT_PB_RETURN_OK) {
1542 if (resp_uri != NULL) {
1543 _DEBUG_TRACE("resp_uri =[%s] ", resp_uri);
1544 pSyncHdr->responseURI = strdup(resp_uri);
1546 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
1548 pCred = __get_cred(child);
1549 if (pCred == NULL) {
1550 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1553 _DEBUG_TRACE("Cred\n");
1554 pSyncHdr->cred = pCred;
1555 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
1561 if (err == SYNC_AGENT_PB_RETURN_OK) {
1562 _DEBUG_TRACE("end");
1563 *pContent = pSyncHdr;
1565 _DEBUG_TRACE("error");
1566 free_synchdr(pSyncHdr);
1573 static sync_agent_pb_error_e _syncml_binder_results_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
1577 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
1578 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
1580 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
1582 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
1584 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
1587 /* get data from dom tree */
1588 Command *pResults = (Command *) calloc(1, sizeof(Command));
1589 if (pResults == NULL) {
1590 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1591 _DEBUG_TRACE("pResults is null");
1595 pResults->type = COMMAND_TYPE_RESULTS;
1596 pResults->msgID = pSyncHdr->messageID;
1597 pResults->refCount = 1;
1599 WBXMLTreeNode *child = NULL;
1600 const char *child_xml_name = NULL;
1601 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
1602 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
1604 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
1605 char *cmd_id = NULL;
1606 err = sync_agent_get_text_from_node(child, &cmd_id);
1607 if (err != SYNC_AGENT_PB_RETURN_OK) {
1610 if (cmd_id != NULL) {
1611 _DEBUG_TRACE("CmdID = [%s]", cmd_id);
1612 pResults->cmdID = atoi(cmd_id);
1614 } else if (strcmp(child_xml_name, ELEMENT_MSGREF) == 0) {
1615 char *msg_ref = NULL;
1616 err = sync_agent_get_text_from_node(child, &msg_ref);
1617 if (err != SYNC_AGENT_PB_RETURN_OK) {
1620 if (msg_ref != NULL) {
1621 _DEBUG_TRACE("MsgRef = [%s]", msg_ref);
1622 pResults->private.results.msgRef = atoi(msg_ref);
1624 } else if (strcmp(child_xml_name, ELEMENT_CMDREF) == 0) {
1625 char *cmd_ref = NULL;
1626 err = sync_agent_get_text_from_node(child, &cmd_ref);
1627 if (err != SYNC_AGENT_PB_RETURN_OK) {
1630 if (cmd_ref != NULL) {
1631 _DEBUG_TRACE("MsgRef = [%s]", cmd_ref);
1632 pResults->private.results.cmdRef = atoi(cmd_ref);
1634 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
1636 WBXMLTreeNode *grandchild = NULL;
1637 const char *grandchild_xml_name = NULL;
1639 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
1640 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
1642 if (strcmp(grandchild_xml_name, ELEMENT_TYPE) == 0) {
1643 char *contentType = NULL;
1644 err = sync_agent_get_text_from_node(grandchild, &contentType);
1645 if (err != SYNC_AGENT_PB_RETURN_OK) {
1648 if (contentType != NULL) {
1649 _DEBUG_TRACE("Content Type = [%s]", contentType);
1650 pResults->private.results.type = strdup(contentType);
1654 } else if (strcmp(child_xml_name, ELEMENT_TARGETREF) == 0) {
1656 } else if (strcmp(child_xml_name, ELEMENT_SOURCEREF) == 0) {
1658 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
1659 /*create item in results command */
1661 item = create_Item();
1663 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1667 WBXMLTreeNode *grandchild = NULL;
1668 const char *grandchild_xml_name = NULL;
1669 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
1670 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
1672 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
1673 Location *pSourceLocation = __get_location(grandchild);
1674 if (pSourceLocation == NULL) {
1675 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1678 if (pSourceLocation != NULL)
1679 item->source = pSourceLocation;
1680 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
1681 Location *pTargetLocation = __get_location(grandchild);
1682 if (pTargetLocation == NULL) {
1683 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1686 if (pTargetLocation != NULL)
1687 item->target = pTargetLocation;
1688 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
1689 WBXMLTreeNode *grandgrandchild = NULL;
1690 const char *grandgrandchild_xml_name = NULL;
1692 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
1693 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
1695 if (strcmp(grandgrandchild_xml_name, ELEMENT_TYPE) == 0) {
1696 char *contentType = NULL;
1697 err = sync_agent_get_text_from_node(grandgrandchild, &contentType);
1698 if (err != SYNC_AGENT_PB_RETURN_OK) {
1701 if (contentType != NULL) {
1702 _DEBUG_TRACE("Content Type = [%s]", contentType);
1703 item->contenttype = strdup(contentType);
1705 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_SIZE) == 0) {
1707 err = sync_agent_get_text_from_node(grandgrandchild, &size);
1708 if (err != SYNC_AGENT_PB_RETURN_OK) {
1712 _DEBUG_TRACE("Size = [%s]", size);
1713 item->size = atoi(size);
1715 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_FORMAT) == 0) {
1716 char *format = NULL;
1717 err = sync_agent_get_text_from_node(grandgrandchild, &format);
1718 if (err != SYNC_AGENT_PB_RETURN_OK) {
1721 if (format != NULL) {
1722 _DEBUG_TRACE("Content Type = [%s]", format);
1723 item->format = strdup(format);
1727 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
1729 err = sync_agent_get_text_from_cdata_node(grandchild, &data);
1730 if (err != SYNC_AGENT_PB_RETURN_OK) {
1734 _DEBUG_TRACE("Data =[%s] ", data);
1735 item->private.data = g_strdup(data);
1736 item->dataType = ITEM_DATA;
1738 } else if (strcmp(grandchild_xml_name, ELEMENT_MOREDATA) == 0) {
1739 _DEBUG_TRACE(ELEMENT_MOREDATA);
1743 pResults->private.results.items = g_list_append(pResults->private.results.items, item);
1748 if (err == SYNC_AGENT_PB_RETURN_OK) {
1749 _DEBUG_TRACE("end");
1750 *pContent = pResults;
1752 _DEBUG_TRACE("error");
1753 free_command(pResults);
1761 static sync_agent_pb_error_e _syncml_binder_get_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
1765 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
1766 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
1768 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
1770 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
1771 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
1774 /* get data from dom tree */
1775 Command *pGet = (Command *) calloc(1, sizeof(Command));
1777 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1778 _DEBUG_TRACE("pGet is null");
1782 pGet->type = COMMAND_TYPE_GET;
1783 pGet->msgID = pSyncHdr->messageID;
1786 WBXMLTreeNode *child = NULL;
1787 const char *child_xml_name = NULL;
1788 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
1789 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
1791 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
1792 char *cmd_id = NULL;
1793 err = sync_agent_get_text_from_node(child, &cmd_id);
1794 if (err != SYNC_AGENT_PB_RETURN_OK) {
1797 if (cmd_id != NULL) {
1798 _DEBUG_TRACE("CmdID = [%s]", cmd_id);
1799 pGet->cmdID = atoi(cmd_id);
1801 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
1803 WBXMLTreeNode *grandchild = NULL;
1804 const char *grandchild_xml_name = NULL;
1806 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
1807 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
1809 if (strcmp(grandchild_xml_name, ELEMENT_TYPE) == 0) {
1810 char *contentType = NULL;
1811 err = sync_agent_get_text_from_node(grandchild, &contentType);
1812 if (err != SYNC_AGENT_PB_RETURN_OK) {
1815 if (contentType != NULL) {
1816 _DEBUG_TRACE("Content Type = [%s]", contentType);
1817 pGet->private.access.type = strdup(contentType);
1821 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
1824 item = create_Item();
1826 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1830 WBXMLTreeNode *grandchild = NULL;
1831 const char *grandchild_xml_name = NULL;
1832 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
1833 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
1835 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
1836 Location *pSourceLocation = __get_location(grandchild);
1837 if (pSourceLocation == NULL) {
1838 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1841 if (pSourceLocation != NULL)
1842 item->source = pSourceLocation;
1843 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
1844 Location *pTargetLocation = __get_location(grandchild);
1845 if (pTargetLocation == NULL) {
1846 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1849 if (pTargetLocation != NULL)
1850 item->target = pTargetLocation;
1851 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
1852 WBXMLTreeNode *grandgrandchild = NULL;
1853 const char *grandgrandchild_xml_name = NULL;
1855 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
1856 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
1858 if (strcmp(grandgrandchild_xml_name, ELEMENT_TYPE) == 0) {
1859 char *contentType = NULL;
1860 err = sync_agent_get_text_from_node(grandgrandchild, &contentType);
1861 if (err != SYNC_AGENT_PB_RETURN_OK) {
1864 if (contentType != NULL) {
1865 _DEBUG_TRACE("Content Type = [%s]", contentType);
1866 item->contenttype = strdup(contentType);
1868 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_SIZE) == 0) {
1870 err = sync_agent_get_text_from_node(grandgrandchild, &size);
1871 if (err != SYNC_AGENT_PB_RETURN_OK) {
1875 _DEBUG_TRACE("Size = [%s]", size);
1876 item->size = atoi(size);
1878 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_FORMAT) == 0) {
1879 char *format = NULL;
1880 err = sync_agent_get_text_from_node(grandgrandchild, &format);
1881 if (err != SYNC_AGENT_PB_RETURN_OK) {
1884 if (format != NULL) {
1885 _DEBUG_TRACE("Content Type =[%s] ", format);
1886 item->format = strdup(format);
1890 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
1892 err = sync_agent_get_text_from_cdata_node(grandchild, &data);
1893 if (err != SYNC_AGENT_PB_RETURN_OK) {
1897 _DEBUG_TRACE("Data = [%s]", data);
1898 item->private.data = strdup(data);
1899 item->dataType = ITEM_DATA;
1901 } else if (strcmp(grandchild_xml_name, ELEMENT_MOREDATA) == 0) {
1902 _DEBUG_TRACE(ELEMENT_MOREDATA);
1907 pGet->private.access.items = g_list_append(pGet->private.access.items, item);
1913 if (err == SYNC_AGENT_PB_RETURN_OK) {
1914 _DEBUG_TRACE("end");
1917 _DEBUG_TRACE("error");
1926 static sync_agent_pb_error_e _syncml_binder_alert_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
1930 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
1931 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
1933 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
1935 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
1936 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
1939 /* get data from dom tree */
1940 Command *pAlert = (Command *) calloc(1, sizeof(Command));
1941 if (pAlert == NULL) {
1942 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1943 _DEBUG_TRACE("pAlert is null");
1947 pAlert->type = COMMAND_TYPE_ALERT;
1948 pAlert->msgID = pSyncHdr->messageID;
1949 pAlert->refCount = 1;
1951 WBXMLTreeNode *child = NULL;
1952 const char *child_xml_name = NULL;
1953 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
1954 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
1956 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
1957 char *cmd_id = NULL;
1958 err = sync_agent_get_text_from_node(child, &cmd_id);
1959 if (err != SYNC_AGENT_PB_RETURN_OK) {
1962 if (cmd_id != NULL) {
1963 _DEBUG_TRACE("CmdID = [%s]", cmd_id);
1964 pAlert->cmdID = atoi(cmd_id);
1966 } else if (strcmp(child_xml_name, ELEMENT_DATA) == 0) {
1968 err = sync_agent_get_text_from_node(child, &data);
1969 if (err != SYNC_AGENT_PB_RETURN_OK) {
1973 _DEBUG_TRACE("Data = [%s]", data);
1974 pAlert->private.alert.type = atoi(data);
1976 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
1977 _DEBUG_TRACE("alert item");
1979 item = create_Item();
1982 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1986 WBXMLTreeNode *grandchild = NULL;
1987 const char *grandchild_xml_name = NULL;
1988 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
1989 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
1991 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
1992 Location *pSourceLocation = __get_location(grandchild);
1993 if (pSourceLocation == NULL) {
1994 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
1997 if (pSourceLocation != NULL)
1998 pAlert->source = pSourceLocation;
1999 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
2000 Location *pTargetLocation = __get_location(grandchild);
2001 if (pTargetLocation == NULL) {
2002 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2005 if (pTargetLocation != NULL)
2006 item->target = pTargetLocation;
2007 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
2008 WBXMLTreeNode *grandgrandchild = NULL;
2009 const char *grandgrandchild_xml_name = NULL;
2011 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
2012 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
2014 if (strcmp(grandgrandchild_xml_name, ELEMENT_MAXOBJSIZE) == 0) {
2015 char *maxObjSize = NULL;
2016 err = sync_agent_get_text_from_node(grandgrandchild, &maxObjSize);
2017 if (err != SYNC_AGENT_PB_RETURN_OK) {
2020 if (maxObjSize != NULL) {
2021 _DEBUG_TRACE("MaxObjSize = [%s]", maxObjSize);
2022 pAlert->private.alert.maxObjSize = atoi(maxObjSize);
2026 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
2028 /*err = sync_agent_get_text_from_cdata_node(grandchild, &data); */
2029 err = sync_agent_get_text_from_node(grandchild, &data);
2030 if (err != SYNC_AGENT_PB_RETURN_OK) {
2034 _DEBUG_TRACE("item Data =[%s] ", data);
2035 item->private.data = g_strdup(data);
2036 item->dataType = ITEM_DATA;
2040 pAlert->private.alert.items = g_list_append(pAlert->private.alert.items, item);
2046 if (err == SYNC_AGENT_PB_RETURN_OK) {
2047 _DEBUG_TRACE("end");
2050 _DEBUG_TRACE("error");
2051 free_command(pAlert);
2059 static sync_agent_pb_error_e _syncml_binder_add_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2063 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
2064 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
2066 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2068 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
2069 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
2072 /* get data from dom tree */
2073 Command *pAdd = (Command *) calloc(1, sizeof(Command));
2075 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2076 _DEBUG_TRACE("pAdd is null");
2080 pAdd->type = COMMAND_TYPE_ADD;;
2081 pAdd->msgID = pSyncHdr->messageID;
2082 pAdd->private.change.type = CHANGE_ADD;
2085 WBXMLTreeNode *child = NULL;
2086 const char *child_xml_name = NULL;
2087 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
2088 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
2090 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
2091 char *cmd_id = NULL;
2092 err = sync_agent_get_text_from_node(child, &cmd_id);
2093 if (err != SYNC_AGENT_PB_RETURN_OK) {
2096 if (cmd_id != NULL) {
2097 _DEBUG_TRACE("CmdID =[%s] ", cmd_id);
2098 pAdd->cmdID = atoi(cmd_id);
2100 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
2103 item = create_Item();
2105 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2109 WBXMLTreeNode *grandchild = NULL;
2110 const char *grandchild_xml_name = NULL;
2111 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
2112 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
2114 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
2115 Location *pSourceLocation = __get_location(grandchild);
2116 if (pSourceLocation == NULL) {
2117 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2120 if (pSourceLocation != NULL)
2121 item->source = pSourceLocation;
2122 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
2123 Location *pTargetLocation = __get_location(grandchild);
2124 if (pTargetLocation == NULL) {
2125 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2128 if (pTargetLocation != NULL)
2129 item->target = pTargetLocation;
2130 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
2131 WBXMLTreeNode *grandgrandchild = NULL;
2132 const char *grandgrandchild_xml_name = NULL;
2134 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
2135 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
2137 if (strcmp(grandgrandchild_xml_name, ELEMENT_TYPE) == 0) {
2138 char *contentType = NULL;
2139 err = sync_agent_get_text_from_node(grandgrandchild, &contentType);
2140 if (err != SYNC_AGENT_PB_RETURN_OK) {
2143 if (contentType != NULL) {
2144 _DEBUG_TRACE("Content Type = [%s]", contentType);
2145 item->contenttype = strdup(contentType);
2147 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_SIZE) == 0) {
2149 err = sync_agent_get_text_from_node(grandgrandchild, &size);
2150 if (err != SYNC_AGENT_PB_RETURN_OK) {
2154 _DEBUG_TRACE("Size =[%s] ", size);
2155 item->size = atoi(size);
2157 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_FORMAT) == 0) {
2158 char *format = NULL;
2159 err = sync_agent_get_text_from_node(grandgrandchild, &format);
2160 if (err != SYNC_AGENT_PB_RETURN_OK) {
2163 if (format != NULL) {
2164 _DEBUG_TRACE("format =[%s] ", format);
2165 item->format = strdup(format);
2169 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
2171 err = sync_agent_get_text_from_cdata_node(grandchild, &data);
2172 if (err != SYNC_AGENT_PB_RETURN_OK) {
2176 _DEBUG_TRACE("Data =[%s] ", data);
2177 item->private.data = g_strdup(data);
2178 item->dataType = ITEM_DATA;
2180 } else if (strcmp(grandchild_xml_name, ELEMENT_MOREDATA) == 0) {
2181 _DEBUG_TRACE(ELEMENT_MOREDATA);
2185 pAdd->private.change.items = g_list_append(pAdd->private.change.items, item);
2191 if (err == SYNC_AGENT_PB_RETURN_OK) {
2192 _DEBUG_TRACE("end");
2195 _DEBUG_TRACE("error");
2204 static sync_agent_pb_error_e _syncml_binder_replace_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2208 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
2209 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
2211 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2213 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
2214 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
2217 /* get data from dom tree */
2218 Command *pReplace = (Command *) calloc(1, sizeof(Command));
2219 if (pReplace == NULL) {
2220 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2221 _DEBUG_TRACE("pReplace is null");
2225 pReplace->type = COMMAND_TYPE_REPLACE;;
2226 pReplace->msgID = pSyncHdr->messageID;
2227 pReplace->private.change.type = CHANGE_REPLACE;
2228 pReplace->refCount = 1;
2230 WBXMLTreeNode *child = NULL;
2231 const char *child_xml_name = NULL;
2232 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
2233 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
2235 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
2236 char *cmd_id = NULL;
2237 err = sync_agent_get_text_from_node(child, &cmd_id);
2238 if (err != SYNC_AGENT_PB_RETURN_OK) {
2242 _DEBUG_TRACE("CmdID =[%s] ", cmd_id);
2243 pReplace->cmdID = atoi(cmd_id);
2245 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
2248 item = create_Item();
2250 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2254 WBXMLTreeNode *grandchild = NULL;
2255 const char *grandchild_xml_name = NULL;
2256 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
2257 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
2259 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
2260 Location *pSourceLocation = __get_location(grandchild);
2261 if (pSourceLocation == NULL) {
2262 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2265 if (pSourceLocation != NULL)
2266 item->source = pSourceLocation;
2267 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
2268 Location *pTargetLocation = __get_location(grandchild);
2269 if (pTargetLocation == NULL) {
2270 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2273 if (pTargetLocation != NULL)
2274 item->target = pTargetLocation;
2275 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
2276 WBXMLTreeNode *grandgrandchild = NULL;
2277 const char *grandgrandchild_xml_name = NULL;
2279 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
2280 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
2281 if (strcmp(grandgrandchild_xml_name, ELEMENT_TYPE) == 0) {
2283 char *contentType = NULL;
2284 err = sync_agent_get_text_from_node(grandgrandchild, &contentType);
2285 _DEBUG_TRACE("%d\n", err);
2287 /* if (err != SYNC_AGENT_PB_RETURN_OK || err != SYNC_AGENT_PB_RETURN_UTIL_NO_TEXT_VALUE) {
2290 if (contentType != NULL) {
2291 _DEBUG_TRACE("Content Type = [%s]", contentType);
2292 item->contenttype = strdup(contentType);
2294 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_SIZE) == 0) {
2297 err = sync_agent_get_text_from_node(grandgrandchild, &size);
2298 if (err != SYNC_AGENT_PB_RETURN_OK) {
2302 _DEBUG_TRACE("Size =[%s] ", size);
2303 item->size = atoi(size);
2305 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_FORMAT) == 0) {
2306 char *format = NULL;
2307 err = sync_agent_get_text_from_node(grandgrandchild, &format);
2308 if (err != SYNC_AGENT_PB_RETURN_OK) {
2311 if (format != NULL) {
2312 _DEBUG_TRACE("Content Type = [%s]", format);
2313 item->format = strdup(format);
2318 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
2320 err = sync_agent_get_text_from_cdata_node(grandchild, &data);
2321 if (err != SYNC_AGENT_PB_RETURN_OK) {
2325 _DEBUG_TRACE("Data = [%s]", data);
2326 item->private.data = g_strdup(data);
2327 item->dataType = ITEM_DATA;
2331 pReplace->private.change.items = g_list_append(pReplace->private.change.items, item);
2337 if (err == SYNC_AGENT_PB_RETURN_OK) {
2338 _DEBUG_TRACE("end");
2339 *pContent = pReplace;
2341 _DEBUG_TRACE("error");
2342 free_command(pReplace);
2350 static sync_agent_pb_error_e _syncml_binder_delete_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2354 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
2355 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
2357 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2359 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
2360 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
2363 /* get data from dom tree */
2364 Command *pDelete = (Command *) calloc(1, sizeof(Command));
2365 if (pDelete == NULL) {
2366 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2367 _DEBUG_TRACE("pDelete is null");
2371 pDelete->type = COMMAND_TYPE_DELETE;
2372 pDelete->msgID = pSyncHdr->messageID;
2373 pDelete->private.change.type = CHANGE_DELETE;
2374 pDelete->refCount = 1;
2376 WBXMLTreeNode *child = NULL;
2377 const char *child_xml_name = NULL;
2378 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
2379 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
2381 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
2382 char *cmd_id = NULL;
2383 err = sync_agent_get_text_from_node(child, &cmd_id);
2384 if (err != SYNC_AGENT_PB_RETURN_OK) {
2387 if (cmd_id != NULL) {
2388 _DEBUG_TRACE("CmdID = [%s]", cmd_id);
2389 pDelete->cmdID = atoi(cmd_id);
2391 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
2394 item = create_Item();
2396 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2400 WBXMLTreeNode *grandchild = NULL;
2401 const char *grandchild_xml_name = NULL;
2402 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
2403 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
2405 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
2406 Location *pSourceLocation = __get_location(grandchild);
2407 if (pSourceLocation == NULL) {
2408 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2411 if (pSourceLocation != NULL)
2412 item->source = pSourceLocation;
2413 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
2414 Location *pTargetLocation = __get_location(grandchild);
2415 if (pTargetLocation == NULL) {
2416 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2419 if (pTargetLocation != NULL)
2420 item->target = pTargetLocation;
2421 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
2422 WBXMLTreeNode *grandgrandchild = NULL;
2423 const char *grandgrandchild_xml_name = NULL;
2425 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
2426 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
2428 if (strcmp(grandgrandchild_xml_name, ELEMENT_TYPE) == 0) {
2429 char *contentType = NULL;
2430 err = sync_agent_get_text_from_node(grandgrandchild, &contentType);
2431 if (err != SYNC_AGENT_PB_RETURN_OK) {
2434 if (contentType != NULL) {
2435 _DEBUG_TRACE("Content Type = [%s]", contentType);
2436 item->contenttype = strdup(contentType);
2440 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
2444 pDelete->private.change.items = g_list_append(pDelete->private.change.items, item);
2450 if (err == SYNC_AGENT_PB_RETURN_OK) {
2451 _DEBUG_TRACE("end");
2452 *pContent = pDelete;
2454 _DEBUG_TRACE("error");
2455 free_command(pDelete);
2463 static sync_agent_pb_error_e _syncml_binder_exec_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2467 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
2468 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
2470 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2472 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
2473 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
2475 /* get data from dom tree */
2476 Command *pExec = (Command *) calloc(1, sizeof(Command));
2477 if (pExec == NULL) {
2478 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2479 _DEBUG_TRACE("pExec is null");
2483 pExec->type = COMMAND_TYPE_EXEC;
2484 pExec->msgID = pSyncHdr->messageID;
2485 pExec->refCount = 1;
2487 WBXMLTreeNode *child = NULL;
2488 const char *child_xml_name = NULL;
2489 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
2490 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
2492 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
2493 char *cmd_id = NULL;
2494 err = sync_agent_get_text_from_node(child, &cmd_id);
2495 if (err != SYNC_AGENT_PB_RETURN_OK) {
2498 if (cmd_id != NULL) {
2499 _DEBUG_TRACE("CmdID =[%s] ", cmd_id);
2500 pExec->cmdID = atoi(cmd_id);
2502 } else if (strcmp(child_xml_name, ELEMENT_CORRELATOR) == 0) {
2503 char *pCorrelator = NULL;
2504 err = sync_agent_get_text_from_node(child, &pCorrelator);
2505 if (err != SYNC_AGENT_PB_RETURN_OK) {
2508 if (pCorrelator != NULL) {
2509 _DEBUG_TRACE("pCorrelator = [%s]", pCorrelator);
2510 pExec->private.exec.correlator = strdup(pCorrelator);
2512 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
2514 pExec->private.exec.item = create_Item();
2515 if (pExec->private.exec.item == NULL) {
2516 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2519 WBXMLTreeNode *grandchild = NULL;
2520 const char *grandchild_xml_name = NULL;
2521 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
2522 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
2524 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
2525 Location *pSourceLocation = __get_location(grandchild);
2526 if (pSourceLocation == NULL) {
2527 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2530 if (pSourceLocation != NULL)
2531 pExec->private.exec.item->source = pSourceLocation;
2532 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
2533 Location *pTargetLocation = __get_location(grandchild);
2534 if (pTargetLocation == NULL) {
2535 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2538 if (pTargetLocation != NULL)
2539 pExec->private.exec.item->target = pTargetLocation;
2546 if (err == SYNC_AGENT_PB_RETURN_OK) {
2547 _DEBUG_TRACE("end");
2550 _DEBUG_TRACE("error");
2551 free_command(pExec);
2558 static sync_agent_pb_error_e _syncml_binder_sequence_start_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2563 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
2565 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2567 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
2568 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
2570 /* get data from dom tree */
2571 Command *pSequence = (Command *) calloc(1, sizeof(Command));
2573 if (pSequence == NULL) {
2574 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2575 _DEBUG_TRACE("pSequence is null");
2579 pSequence->type = COMMAND_TYPE_SEQUENCE;
2580 pSequence->msgID = pSyncHdr->messageID;
2581 pSequence->refCount = 1;
2584 if (err == SYNC_AGENT_PB_RETURN_OK) {
2585 _DEBUG_TRACE("end");
2586 *pContent = pSequence;
2588 _DEBUG_TRACE("error");
2589 free_command(pSequence);
2597 static sync_agent_pb_error_e _syncml_binder_sequence_end_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2602 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2604 if (err == SYNC_AGENT_PB_RETURN_OK) {
2605 _DEBUG_TRACE("end");
2607 _DEBUG_TRACE("error");
2615 static sync_agent_pb_error_e _syncml_binder_atomic_start_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2620 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
2622 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2624 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
2625 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
2626 Command *pAtomic = (Command *) calloc(1, sizeof(Command));
2628 if (pAtomic == NULL) {
2629 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2630 _DEBUG_TRACE("pExec is null");
2634 pAtomic->type = COMMAND_TYPE_ATOMIC;
2635 pAtomic->msgID = pSyncHdr->messageID;
2636 pAtomic->refCount = 1;
2639 if (err == SYNC_AGENT_PB_RETURN_OK) {
2640 _DEBUG_TRACE("end");
2641 *pContent = pAtomic;
2643 _DEBUG_TRACE("error");
2644 free_command(pAtomic);
2651 static sync_agent_pb_error_e _syncml_binder_atomic_end_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2656 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2658 if (err == SYNC_AGENT_PB_RETURN_OK) {
2659 _DEBUG_TRACE("end");
2661 _DEBUG_TRACE("error");
2668 static sync_agent_pb_error_e _syncml_binder_final_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2672 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2674 int *pFinal = (int *)1;
2681 static sync_agent_pb_error_e _syncml_binder_status_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2685 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
2687 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2689 /* get data from dom tree */
2690 Status *pStatus = (Status *) calloc(1, sizeof(Status));
2691 if (pStatus == NULL) {
2692 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2693 _DEBUG_TRACE("pStatus is null");
2697 WBXMLTreeNode *child = NULL;
2698 const char *child_xml_name = NULL;
2699 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
2700 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
2702 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
2703 char *cmd_id = NULL;
2704 err = sync_agent_get_text_from_node(child, &cmd_id);
2705 if (err != SYNC_AGENT_PB_RETURN_OK) {
2708 if (cmd_id != NULL) {
2709 _DEBUG_TRACE("CmdID =[%s] ", cmd_id);
2710 pStatus->cmdID = atoi(cmd_id);
2712 } else if (strcmp(child_xml_name, ELEMENT_MSGREF) == 0) {
2713 char *msgref = NULL;
2714 err = sync_agent_get_text_from_node(child, &msgref);
2715 if (err != SYNC_AGENT_PB_RETURN_OK) {
2718 if (msgref != NULL) {
2719 _DEBUG_TRACE("MsgRef = [%s]", msgref);
2720 pStatus->msgRef = atoi(msgref);
2722 } else if (strcmp(child_xml_name, ELEMENT_CMDREF) == 0) {
2723 char *cmdref = NULL;
2724 err = sync_agent_get_text_from_node(child, &cmdref);
2725 if (err != SYNC_AGENT_PB_RETURN_OK) {
2728 if (cmdref != NULL) {
2729 _DEBUG_TRACE("CmdRef = [%s]", cmdref);
2730 pStatus->cmdRef = atoi(cmdref);
2732 } else if (strcmp(child_xml_name, ELEMENT_CMD) == 0) {
2734 err = sync_agent_get_text_from_node(child, &cmd);
2735 if (err != SYNC_AGENT_PB_RETURN_OK) {
2739 _DEBUG_TRACE("Cmd =[%s] ", cmd);
2740 pStatus->type = converttocommandtype(cmd);
2742 } else if (strcmp(child_xml_name, ELEMENT_TARGETREF) == 0) {
2743 char *targetref = NULL;
2744 Location *pLocation = NULL;
2745 err = sync_agent_get_text_from_node(child, &targetref);
2746 if (err != SYNC_AGENT_PB_RETURN_OK) {
2749 if (targetref != NULL) {
2750 DM_ERROR ret = DM_OK;
2751 _DEBUG_TRACE("TargetRef = [%s]", targetref);
2752 ret = create_location(targetref, NULL, &pLocation);
2754 _DEBUG_VERBOSE("create_location failed");
2757 pStatus->targetRef = pLocation;
2759 } else if (strcmp(child_xml_name, ELEMENT_SOURCEREF) == 0) {
2760 char *sourceref = NULL;
2761 Location *pLocation = NULL;
2762 err = sync_agent_get_text_from_node(child, &sourceref);
2763 if (err != SYNC_AGENT_PB_RETURN_OK) {
2766 if (sourceref != NULL) {
2767 DM_ERROR ret = DM_OK;
2768 _DEBUG_TRACE("SourceRef = [%s]", sourceref);
2769 ret = create_location(sourceref, NULL, &pLocation);
2771 _DEBUG_VERBOSE("create_location failed");
2774 pStatus->sourceRef = pLocation;
2776 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
2777 _DEBUG_TRACE(ELEMENT_CRED);
2778 pStatus->cred = __get_cred(child);
2779 } else if (strcmp(child_xml_name, ELEMENT_CHAL) == 0) {
2780 _DEBUG_TRACE("Chal\n");
2781 pStatus->chal = __get_chal(child);
2782 } else if (strcmp(child_xml_name, ELEMENT_DATA) == 0) {
2784 err = sync_agent_get_text_from_node(child, &data);
2785 if (err != SYNC_AGENT_PB_RETURN_OK) {
2789 _DEBUG_TRACE("Data = [%s]\n", data);
2790 pStatus->data = strdup(data);
2792 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
2798 if (err == SYNC_AGENT_PB_RETURN_OK) {
2799 _DEBUG_TRACE("end");
2800 *pContent = pStatus;
2802 _DEBUG_TRACE("error");
2803 free_status(pStatus);
2809 static sync_agent_pb_error_e _syncml_binder_copy_command_reverse_converter_function(sync_agent_pb_protocol_binder_reverse_info_s * pReverse_binder, WBXMLTreeNode * wbxml_dom_node, Content_Ptr * pContent)
2813 retvm_if((pReverse_binder) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "pReverse_binder is NULL!!");
2814 retvm_if((wbxml_dom_node) == NULL, SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY, "wbxml_dom_node is NULL!!");
2816 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2818 void *user_data = sync_agent_get_user_data_from_reverse_protocol_binder(pReverse_binder);
2819 SyncHdr *pSyncHdr = (SyncHdr *) user_data;
2821 /* get data from dom tree */
2822 Command *pCopy = (Command *) calloc(1, sizeof(Command));
2823 if (pCopy == NULL) {
2824 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2825 _DEBUG_TRACE("pCopy is null");
2829 pCopy->type = COMMAND_TYPE_COPY;
2830 pCopy->msgID = pSyncHdr->messageID;
2831 pCopy->private.change.type = CHANGE_COPY;
2832 pCopy->refCount = 1;
2834 WBXMLTreeNode *child = NULL;
2835 const char *child_xml_name = NULL;
2836 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
2837 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
2839 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
2840 char *cmd_id = NULL;
2841 err = sync_agent_get_text_from_node(child, &cmd_id);
2842 if (err != SYNC_AGENT_PB_RETURN_OK) {
2845 if (cmd_id != NULL) {
2846 _DEBUG_TRACE("CmdID = [%s]", cmd_id);
2847 pCopy->cmdID = atoi(cmd_id);
2849 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
2853 item = create_Item();
2855 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2859 WBXMLTreeNode *grandchild = NULL;
2860 const char *grandchild_xml_name = NULL;
2861 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
2862 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
2864 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
2865 Location *pSourceLocation = __get_location(grandchild);
2866 if (pSourceLocation == NULL) {
2867 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2870 if (pSourceLocation != NULL)
2871 item->source = pSourceLocation;
2872 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
2873 Location *pTargetLocation = __get_location(grandchild);
2874 if (pTargetLocation == NULL) {
2875 err = SYNC_AGENT_PB_RETURN_OUT_OF_MEMORY;
2878 if (pTargetLocation != NULL)
2879 item->target = pTargetLocation;
2880 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
2881 WBXMLTreeNode *grandgrandchild = NULL;
2882 const char *grandgrandchild_xml_name = NULL;
2884 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
2885 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
2887 if (strcmp(grandgrandchild_xml_name, ELEMENT_TYPE) == 0) {
2888 char *contentType = NULL;
2889 err = sync_agent_get_text_from_node(grandgrandchild, &contentType);
2890 if (err != SYNC_AGENT_PB_RETURN_OK) {
2893 if (contentType != NULL) {
2894 _DEBUG_TRACE("Content Type = [%s]", contentType);
2895 item->contenttype = strdup(contentType);
2899 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
2903 pCopy->private.change.items = g_list_append(pCopy->private.change.items, item);
2909 if (err == SYNC_AGENT_PB_RETURN_OK) {
2910 _DEBUG_TRACE("end");
2913 _DEBUG_TRACE("error");
2914 free_command(pCopy);
2922 sync_agent_pb_error_e init_syncml_binder_function_set(sync_agent_pb_protocol_binder_function_set_s ** pBinder_function_set)
2926 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2928 err = sync_agent_init_binder_function_set(sizeof(oma_dm_binder_function_info) / sizeof(sync_agent_pb_function_info_s), (sync_agent_pb_function_info_s *) oma_dm_binder_function_info, pBinder_function_set);
2934 void free_syncml_binder_function_set(sync_agent_pb_protocol_binder_function_set_s * pBinder_function_set)
2938 retm_if((pBinder_function_set) == NULL, "pBinder_function_set is NULL!!");
2940 sync_agent_free_binder_function_set(pBinder_function_set);
2945 sync_agent_pb_protocol_binder_info_s *syncml_binder_init(sync_agent_pb_protocol_binder_info_s * pBinder, sync_agent_pb_encoding_e enc, bool use_strtbl, bool use_flow_mode, sync_agent_pb_protocol_binder_function_set_s * pBinder_function_set)
2949 sync_agent_pb_protocol_binder_info_s *pOutBinder = NULL;
2951 pOutBinder = sync_agent_init_protocol_binder(pBinder, SYNC_AGENT_PB_PROTOCOL_SYNCML_SYNCML12, NULL, enc, 1, use_strtbl, false, use_flow_mode, false, NULL, NULL, pBinder_function_set);
2953 if (pOutBinder == NULL) {
2956 //protocol_binder_set_estimate_doc_size(pOutBinder, SYNC_AGENT_INIT_ESTIMATE_DOC_SIZE);
2963 sync_agent_pb_error_e syncml_binder_append(sync_agent_pb_protocol_binder_info_s * pBinder, OMA_DM_Protocol_Element protocol_element, Content_Ptr pContent)
2967 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_UNKNOWN_ERROR, "pBinder is NULL!!");
2969 _DEBUG_TRACE(" protocol_element = %d, pContent = %p\n", protocol_element, pContent);
2970 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2972 err = sync_agent_append_element(pBinder, protocol_element, pContent);
2978 void syncml_binder_terminate(sync_agent_pb_protocol_binder_info_s * pBinder)
2982 retm_if((pBinder) == NULL, "pBinder is NULL!!");
2984 sync_agent_destroy_protocol_binder(pBinder);
2989 sync_agent_pb_error_e syncml_binder_get_stream(sync_agent_pb_protocol_binder_info_s * pBinder, char **byte_stream, unsigned int *byte_stream_size)
2993 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_UNKNOWN_ERROR, "pBinder is NULL!!");
2995 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
2997 err = sync_agent_get_stream_from_protocol_binder(pBinder, byte_stream, byte_stream_size);
2998 if (err != SYNC_AGENT_PB_RETURN_OK) {
3007 sync_agent_pb_error_e syncml_binder_get_stream_size(sync_agent_pb_protocol_binder_info_s * pBinder, unsigned int *byte_stream_size)
3011 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_UNKNOWN_ERROR, "pBinder is NULL!!");
3013 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
3015 err = sync_agent_get_stream_size_from_protocol_binder(pBinder, byte_stream_size);
3021 sync_agent_pb_error_e syncml_binder_get_encoding(sync_agent_pb_protocol_binder_info_s * pBinder, sync_agent_pb_encoding_e * enc)
3025 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_UNKNOWN_ERROR, "pBinder is NULL!!");
3027 sync_agent_pb_error_e err = SYNC_AGENT_PB_RETURN_OK;
3029 err = sync_agent_get_encoding_from_protocol_binder(pBinder, enc);
3035 sync_agent_pb_error_e reverse_syncml_binder_init(char *byte_stream,
3036 unsigned int byte_stream_len, sync_agent_pb_decoding_e dec, sync_agent_pb_protocol_binder_function_set_s * pBinder_function_set, void *user_data, sync_agent_pb_protocol_binder_reverse_info_s ** ppBinder)
3040 retvm_if((byte_stream) == NULL, SYNC_AGENT_PB_RETURN_UNKNOWN_ERROR, "byte_stream is NULL!!");
3041 retvm_if((pBinder_function_set) == NULL, SYNC_AGENT_PB_RETURN_UNKNOWN_ERROR, "pBinder_function_set is NULL!!");
3043 sync_agent_pb_protocol_e protocol = SYNC_AGENT_PB_PROTOCOL_UNKNOWN;
3044 sync_agent_pb_error_e err = sync_agent_init_reverse_protocol_binder(byte_stream, byte_stream_len, dec,
3045 &protocol, pBinder_function_set, user_data, ppBinder);
3051 sync_agent_pb_error_e reverse_syncml_binder_next(sync_agent_pb_protocol_binder_reverse_info_s * pBinder, OMA_DM_Protocol_Element * protocol_element, char **protocol_element_name, Content_Ptr * pContent)
3055 retvm_if((pBinder) == NULL, SYNC_AGENT_PB_RETURN_UNKNOWN_ERROR, "pBinder is NULL!!");
3057 sync_agent_pb_error_e err = sync_agent_next_element(pBinder, protocol_element, protocol_element_name, pContent);