From: <svn...@op...> - 2009-11-05 16:30:35
|
Author: dgollub Date: Thu Nov 5 17:30:06 2009 New Revision: 5928 URL: http://www.opensync.org/changeset/5928 Log: Implement the required mapping-table update calls for a UID-update during the sync-done phase. osync_context_report_uid_update() is no longer NOP. see #1161 Modified: trunk/opensync/engine/opensync_engine.c trunk/opensync/engine/opensync_obj_engine.c trunk/opensync/engine/opensync_obj_engine_internals.h Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Thu Nov 5 17:28:53 2009 (r5927) +++ trunk/opensync/engine/opensync_engine.c Thu Nov 5 17:30:06 2009 (r5928) @@ -174,7 +174,19 @@ static void _osync_engine_receive_uid_update(OSyncClientProxy *proxy, void *userdata, const char *objtype, const char *olduid, const char *newuid) { - printf("OBJTYPE: %s OLDUID: %s NEWUID: %s\n", objtype, olduid, newuid); + OSyncError *error = NULL; + OSyncEngine *engine = (OSyncEngine *) userdata; + OSyncObjEngine *objengine = osync_engine_find_objengine(engine, objtype); + + if (!osync_objengine_uid_update(objengine, proxy, olduid, newuid, &error)) + goto error; + + return; +error: + osync_engine_set_error(engine, error); + osync_error_unref(&error); + + return; } static void _osync_engine_receive_change(OSyncClientProxy *proxy, void *userdata, OSyncChange *change) Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Thu Nov 5 17:28:53 2009 (r5927) +++ trunk/opensync/engine/opensync_obj_engine.c Thu Nov 5 17:30:06 2009 (r5928) @@ -1504,3 +1504,17 @@ return FALSE; } + +osync_bool osync_objengine_uid_update(OSyncObjEngine *engine, OSyncClientProxy *proxy, const char *olduid, const char *newuid, OSyncError **error) +{ + long long int memberid = osync_member_get_id(osync_client_proxy_get_member(proxy)); + + if (!osync_archive_update_change_uid(engine->archive, olduid, newuid, memberid, engine->objtype, error)) + goto error; + + return TRUE; + +error: + return FALSE; +} + Modified: trunk/opensync/engine/opensync_obj_engine_internals.h ============================================================================== --- trunk/opensync/engine/opensync_obj_engine_internals.h Thu Nov 5 17:28:53 2009 (r5927) +++ trunk/opensync/engine/opensync_obj_engine_internals.h Thu Nov 5 17:30:06 2009 (r5928) @@ -181,5 +181,8 @@ */ OSYNC_TEST_EXPORT OSyncMember *osync_obj_engine_nth_member(OSyncObjEngine *engine, unsigned int nth); + +OSYNC_TEST_EXPORT osync_bool osync_objengine_uid_update(OSyncObjEngine *objengine, OSyncClientProxy *proxy, const char *olduid, const char *newuid, OSyncError **error); + #endif /* OPENSYNC_OBJ_ENGINE_INTERNALS_H_ */ |