From: <svn...@op...> - 2009-10-16 14:17:23
|
Author: bellmich Date: Fri Oct 16 16:17:08 2009 New Revision: 1336 URL: http://libsyncml.opensync.org/changeset/1336 Log: added support for mapped new items Modified: trunk/tools/syncml-ds-tool.c Modified: trunk/tools/syncml-ds-tool.c ============================================================================== --- trunk/tools/syncml-ds-tool.c Fri Oct 16 16:02:38 2009 (r1335) +++ trunk/tools/syncml-ds-tool.c Fri Oct 16 16:17:08 2009 (r1336) @@ -405,6 +405,7 @@ static SmlAlertType smlDsToolRecvAlertTypeCallback (SmlDataSyncDataStoreSession *self, SmlAlertType type, void *userdata, GError **error); static gboolean smlDsToolRecvChangeCallback (SmlDataSyncDataStoreSession *self, SmlDataSyncChangeItem *item, void *userdata, GError **error); static gboolean smlDsToolRecvChangeStatusCallback (SmlDataSyncDataStoreSession *self, SmlDataSyncChangeItem *item, SmlErrorType code, void *userdata, GError **error); +static gboolean smlDsToolRecvMappingCallback (SmlDataSyncDataStoreSession *self, SmlMapItem *item, void *userdata, GError **error); static gchar* smlDsToolGetAnchorCallback (SmlDataSyncDataStoreSession *self, gboolean remote, void *userdata, GError **error); static gboolean smlDsToolSetAnchorCallback (SmlDataSyncDataStoreSession *self, gboolean remote, const gchar* anchor, void *userdata, GError **error); @@ -477,6 +478,7 @@ sml_data_sync_data_store_register_get_alert_type_callback(datastore->object, smlDsToolRecvAlertTypeCallback, datastore); sml_data_sync_data_store_register_change_callback(datastore->object, smlDsToolRecvChangeCallback, datastore); sml_data_sync_data_store_register_change_status_callback(datastore->object, smlDsToolRecvChangeStatusCallback, datastore); + sml_data_sync_data_store_register_mapping_callback(datastore->object, smlDsToolRecvMappingCallback, datastore); /* sync type */ @@ -1559,6 +1561,38 @@ smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, (*error)->message); return FALSE; } + +static gboolean +smlDsToolRecvMappingCallback (SmlDataSyncDataStoreSession *session, + SmlMapItem *item, + void *userdata, + GError **error) +{ + smlTrace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, session, item, userdata, error); + + /* find the appropriate datasoure */ + SmlDsToolLocationType *datastore = userdata; + if (!datastore) + { + g_set_error(error, TOOL_ERROR, SML_ERROR_GENERIC, + "The userdata of the callback %s is missing.", __func__); + goto error; + } + + /* handle the item */ + if (datastore->index) { + const gchar *local = sml_map_item_get_local_uri(item); + const gchar *remote = sml_map_item_get_remote_uri(item); + g_key_file_set_string(datastore->index, "map", local, remote); + g_key_file_set_string(datastore->index, "reverse_map", remote, local); + } + + smlTrace(TRACE_EXIT, "%s - TRUE", __func__); + return TRUE; +error: + smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, (*error)->message); + return FALSE; +} static gboolean smlDsToolRecvChangeStatusCallback (SmlDataSyncDataStoreSession *session, |