From: <svn...@op...> - 2009-08-07 17:53:49
|
Author: bellmich Date: Fri Aug 7 19:53:35 2009 New Revision: 1244 URL: http://libsyncml.opensync.org/changeset/1244 Log: - adapted to reduced SmlLocation API - integrated SmlChangeItem (replaces SmlDataSyncChange) Modified: trunk/libsyncml/data_sync_api/data_sync.c trunk/libsyncml/data_sync_api/data_sync.h Modified: trunk/libsyncml/data_sync_api/data_sync.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync.c Fri Aug 7 19:52:39 2009 (r1243) +++ trunk/libsyncml/data_sync_api/data_sync.c Fri Aug 7 19:53:35 2009 (r1244) @@ -39,6 +39,7 @@ #include "data_sync_loop.h" #include "transport.h" #include "libsyncml/objects/sml_ds_server.h" +#include "libsyncml/data_sync_api/sml_change_item_internals.h" /* ********************************* */ /* object creation and configuration */ @@ -614,20 +615,23 @@ smlAssert(type); /* create a new change */ - SmlDataSyncChange *change = smlTryMalloc0(sizeof(SmlDataSyncChange), error); - if (!change) - goto error; + SmlChangeItem *change = sml_change_item_new(); /* fill the new change */ - change->type = type; - change->name = g_strdup(name); - change->userdata = userdata; + sml_change_item_set_action(change, type); + SmlLocation *loc = sml_location_new(); + sml_location_set_uri(loc, name); + if (!sml_change_item_set_location(change, loc, error)) + goto error; + sml_change_item_set_userdata (change, userdata); /* determine the datastore */ - change->datastore = smlDataSyncGetDatastoreFromSource(dsObject, source, error); - if (!change->datastore) + SmlDataSyncDatastore *datastore = smlDataSyncGetDatastoreFromSource(dsObject, source, error); + if (!datastore) + goto error; + sml_change_item_set_data_store(change, datastore); + if (!sml_change_item_set_content_type(change, datastore->contentType, error)) goto error; - SmlDataSyncDatastore *datastore = change->datastore; /* copy data */ if (data) { @@ -647,23 +651,12 @@ appClassLength == strlen(SML_CONTENT_TYPE_AUDIO) ) ) { /* binary data must be base64 encoded */ - change->data = g_base64_encode((const unsigned char *) data, size); - if (!change->data) { - g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, - "The base 64 encoding of glib failed."); + if (!sml_change_item_set_binary_data(change, data, size, error)) goto error; - } - change->size = strlen(change->data); } else { - change->data = smlTryMalloc0(size+1, error); - if (!change->data) + if (!sml_change_item_set_data(change, data, size, error)) goto error; - memcpy(change->data, data, size); - change->size = size; } - } else { - change->data = NULL; - change->size = 0; } /* append change to datastore */ @@ -731,14 +724,10 @@ int i = 0; for (i = 0; i < num; i++) { - SmlDataSyncChange *change = g_list_nth_data(datastore->changes, i); + SmlChangeItem *change = g_list_nth_data(datastore->changes, i); if (!smlDsSessionQueueChange( datastore->session, - change->type, - change->name, - change->data, - change->size, - datastore->contentType, + change, smlDataSyncChangeStatusCallback, change, error)) @@ -929,15 +918,11 @@ smlDsServerFree(datastore->server); while(datastore->changes) { - SmlDataSyncChange *change = datastore->changes->data; + SmlChangeItem *change = datastore->changes->data; datastore->changes = g_list_remove( datastore->changes, change); - if (change->name) - smlSafeCFree(&(change->name)); - if (change->data) - smlSafeCFree(&(change->data)); - smlSafeFree((gpointer *)&change); + g_object_unref(change); } smlSafeFree((gpointer *)&datastore); Modified: trunk/libsyncml/data_sync_api/data_sync.h ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync.h Fri Aug 7 19:52:39 2009 (r1243) +++ trunk/libsyncml/data_sync_api/data_sync.h Fri Aug 7 19:53:35 2009 (r1244) @@ -204,6 +204,7 @@ /*! @brief This internal structure represents exactly one change. */ +/* typedef struct SmlDataSyncChange { SmlDataSyncDatastore *datastore; SmlChangeType type; @@ -212,6 +213,7 @@ gsize size; void *userdata; } SmlDataSyncChange; +*/ void smlDataSyncSendEvent( SmlDataSyncObject *dsObject, |