From: <svn...@op...> - 2009-03-29 13:19:14
|
Author: paule Date: Sun Mar 29 15:19:07 2009 New Revision: 5418 URL: http://www.opensync.org/changeset/5418 Log: opie-sync: port to latest hashtable API change. Patch courtesy of Daniel Gollub. Modified: plugins/opie-sync/src/opie_sync.c plugins/opie-sync/src/opie_sync.h Modified: plugins/opie-sync/src/opie_sync.c ============================================================================== --- plugins/opie-sync/src/opie_sync.c Sun Mar 29 15:12:18 2009 (r5417) +++ plugins/opie-sync/src/opie_sync.c Sun Mar 29 15:19:07 2009 (r5418) @@ -284,16 +284,6 @@ goto error; } - /* Get hashtable */ - const char *configdir = osync_plugin_info_get_configdir(info); - char *tablepath = g_strdup_printf("%s/hashtable.db", configdir); - env->hashtable = osync_hashtable_new(tablepath, osync_objtype_sink_get_name(sink), &error); - g_free(tablepath); - if (!env->hashtable) - goto error; - if(!osync_hashtable_load(env->hashtable, &error)) - goto error; - if(env->objtype == OPIE_OBJECT_TYPE_NOTE) { /* Check if the notes resource has changed since the last sync */ OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); @@ -318,13 +308,14 @@ { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %d, %p)", __func__, sink, info, ctx, slow_sync, data); OpieSinkEnv *env = (OpieSinkEnv *)data; + OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink); OSyncError *error = NULL; if (slow_sync) { osync_trace(TRACE_INTERNAL, "Slow sync requested"); - if (!osync_hashtable_slowsync(env->hashtable, &error)) { + if (!osync_hashtable_slowsync(hashtable, &error)) { osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(&error)); osync_context_report_osyncerror(ctx, error); return; @@ -357,11 +348,11 @@ g_free(hash); /* Detect and set the type of change */ - OSyncChangeType changetype = osync_hashtable_get_changetype(env->hashtable, change); + OSyncChangeType changetype = osync_hashtable_get_changetype(hashtable, change); osync_change_set_changetype(change, changetype); /* Update the hashtable with the hash of the object */ - osync_hashtable_update_change(env->hashtable, change); + osync_hashtable_update_change(hashtable, change); if (changetype != OSYNC_CHANGE_TYPE_UNMODIFIED) { /* Convert category IDs to names that other systems can use */ @@ -404,7 +395,7 @@ } /* Check for deleted entries using the hashtable */ - OSyncList *u, *uids = osync_hashtable_get_deleted(env->hashtable); + OSyncList *u, *uids = osync_hashtable_get_deleted(hashtable); for (u = uids; u; u = u->next) { const char *uid = u->data; @@ -432,7 +423,7 @@ osync_context_report_change(ctx, change); - osync_hashtable_update_change(env->hashtable, change); + osync_hashtable_update_change(hashtable, change); osync_change_unref(change); } @@ -447,6 +438,7 @@ { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); OpieSinkEnv *env = (OpieSinkEnv *)data; + OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink); OSyncError *error = NULL; const char *ext_uid = osync_change_get_uid(change); @@ -533,7 +525,7 @@ if(change_doc) xmlFreeDoc(change_doc); - osync_hashtable_update_change(env->hashtable, change); + osync_hashtable_update_change(hashtable, change); //Answer the call osync_context_report_success(ctx); @@ -566,10 +558,7 @@ if(!osync_anchor_update(anchor, env->plugin_env->notes_path, &error)) goto error; } - - if (!osync_hashtable_save(env->hashtable, &error)) - goto error; - + osync_context_report_success(ctx); osync_trace(TRACE_EXIT, "%s", __func__); return; @@ -583,10 +572,6 @@ static void opie_sync_disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { OpieSinkEnv *env = (OpieSinkEnv *)data; - - /* Close the hashtable */ - osync_hashtable_unref(env->hashtable); - env->hashtable = NULL; //Answer the call osync_context_report_success(ctx); @@ -625,6 +610,9 @@ /* We pass the sink_env object to the sink, so we dont have to look it up * again once the functions are called */ osync_objtype_sink_set_functions(sink, functions, sink_env); + + /* Request a hashtable from the framework. */ + osync_objtype_sink_enable_hashtable(sink, TRUE); return sink_env; } Modified: plugins/opie-sync/src/opie_sync.h ============================================================================== --- plugins/opie-sync/src/opie_sync.h Sun Mar 29 15:12:18 2009 (r5417) +++ plugins/opie-sync/src/opie_sync.h Sun Mar 29 15:19:07 2009 (r5418) @@ -89,7 +89,6 @@ OpiePluginEnv* plugin_env; OSyncObjTypeSink* sink; xmlDoc* doc; - OSyncHashTable* hashtable; OSyncObjFormat* objformat; const char* listelement; const char* itemelement; |