From: <dg...@su...> - 2009-01-05 03:09:59
|
Author: dgollub Date: Mon Jan 5 04:09:37 2009 New Revision: 5010 URL: http://www.opensync.org/changeset/5010 Log: Use OSyncMarshal and the new objformat specific merge/demerge interface to store serialized an entire copy of the entry in the archive. Overwrite the original reported change entry with the merged version. Modified: trunk/opensync/engine/opensync_engine.c trunk/opensync/engine/opensync_obj_engine.c Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Mon Jan 5 04:06:28 2009 (r5009) +++ trunk/opensync/engine/opensync_engine.c Mon Jan 5 04:09:37 2009 (r5010) @@ -286,6 +286,8 @@ ret = osync_objformat_merge(objformat, buffer, size, &outbuf, &outsize, entirebuf, entsize, caps, &error); osync_free(entirebuf); + + osync_data_set_data(osync_change_get_data(change), outbuf, outsize); if (ret != TRUE) goto error; Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Mon Jan 5 04:06:28 2009 (r5009) +++ trunk/opensync/engine/opensync_obj_engine.c Mon Jan 5 04:09:37 2009 (r5010) @@ -1118,11 +1118,12 @@ { - char *buffer = NULL, *outbuf; - unsigned int outsize = 0, size = 0; + char *buffer = NULL, *outbuf, *marshalbuf; + unsigned int outsize = 0, size = 0, marshalsize; const char *objtype = NULL; OSyncMapping *mapping = NULL; - OSyncCapabilities *caps; + OSyncMarshal *marshal = NULL; + OSyncCapabilities *caps = osync_member_get_capabilities(member); OSyncObjFormat *objformat = osync_change_get_objformat(entry_engine->change); osync_trace(TRACE_INTERNAL, "Entry %s for member %lli: Dirty: %i", osync_change_get_uid(entry_engine->change), memberid, osync_entry_engine_is_dirty(entry_engine)); @@ -1133,22 +1134,26 @@ osync_data_get_data(osync_change_get_data(entry_engine->change), &buffer, &size); - if(!osync_archive_save_data(engine->archive, osync_mapping_get_id(mapping), objtype, buffer, size, error)) { + marshal = osync_marshal_new(error); + if (!marshal) + goto error; + + if (!osync_objformat_marshal(objformat, buffer, size, marshal, error)) + goto error; + + osync_marshal_get_buffer(marshal, &marshalbuf, &marshalsize); + + if (!osync_archive_save_data(engine->archive, osync_mapping_get_id(mapping), objtype, marshalbuf, marshalsize, error)) { + osync_marshal_unref(marshal); osync_free(buffer); goto error; } - - caps = osync_member_get_capabilities(member); - if (!caps) { - osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "No capabilities defined for Member %lli.", memberid); - goto error; - } + osync_marshal_unref(marshal); + if (!osync_objformat_demerge(objformat, buffer, size, &outbuf, &outsize, caps, error)) goto error; - osync_free(buffer); - osync_data_set_data(osync_change_get_data(entry_engine->change), outbuf, outsize); } |