From: <svn...@op...> - 2009-03-28 13:44:01
|
Author: dgollub Date: Sat Mar 28 14:41:02 2009 New Revision: 5373 URL: http://www.opensync.org/changeset/5373 Log: Introduced osync_objtype_sink_save_hashtable() for osyncplugin tool. Temporarily disabled hashtable dumping inf osyncdump. refs #1082 Modified: trunk/opensync.sym trunk/opensync/client/opensync_client.c trunk/opensync/plugin/opensync_objtype_sink.c trunk/opensync/plugin/opensync_objtype_sink.h trunk/tools/osyncdump.c trunk/tools/osyncplugin.c Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Sat Mar 28 14:20:04 2009 (r5372) +++ trunk/opensync.sym Sat Mar 28 14:41:02 2009 (r5373) @@ -398,6 +398,7 @@ osync_objtype_sink_read_change osync_objtype_sink_ref osync_objtype_sink_remove_objformat_sink +osync_objtype_sink_save_hashtable osync_objtype_sink_set_available osync_objtype_sink_set_batchcommit_timeout osync_objtype_sink_set_commit_timeout Modified: trunk/opensync/client/opensync_client.c ============================================================================== --- trunk/opensync/client/opensync_client.c Sat Mar 28 14:20:04 2009 (r5372) +++ trunk/opensync/client/opensync_client.c Sat Mar 28 14:41:02 2009 (r5373) @@ -1329,7 +1329,6 @@ OSyncMessage *reply = NULL; OSyncObjTypeSink *sink = NULL; OSyncContext *context = NULL; - OSyncHashTable *hashtable = NULL; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error); @@ -1368,14 +1367,8 @@ osync_context_unref(context); - /* Check if Hashtable is used */ - if ((hashtable = osync_objtype_sink_get_hashtable(sink))) { - - /* Save Hashtable */ - if (!osync_hashtable_save(hashtable, error)) - goto error; - } - + if (!osync_objtype_sink_save_hashtable(sink, error)) + goto error; } osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; Modified: trunk/opensync/plugin/opensync_objtype_sink.c ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.c Sat Mar 28 14:20:04 2009 (r5372) +++ trunk/opensync/plugin/opensync_objtype_sink.c Sat Mar 28 14:41:02 2009 (r5373) @@ -815,3 +815,21 @@ return FALSE; } +osync_bool osync_objtype_sink_save_hashtable(OSyncObjTypeSink *sink, OSyncError **error) +{ + osync_assert(sink); + + if (!osync_objtype_sink_has_hashtable(sink)) + return TRUE; + + osync_assert(sink->hashtable); + + if (!osync_hashtable_save(sink->hashtable, error)) + goto error; + + return TRUE; + +error: + return FALSE; +} + Modified: trunk/opensync/plugin/opensync_objtype_sink.h ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.h Sat Mar 28 14:20:04 2009 (r5372) +++ trunk/opensync/plugin/opensync_objtype_sink.h Sat Mar 28 14:41:02 2009 (r5373) @@ -551,6 +551,18 @@ */ OSYNC_EXPORT osync_bool osync_objtype_sink_load_hashtable(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncError **error); +/*! @brief Save the Hashtable for a specific Sink if requested + * + * Write hashes to the hashtable database. If no Hashtable is requested for this sink + * this functions just returns TRUE. + * + * @param sink Pointer to the sink + * @param error Pointer to error struct, get set on any error + * @returns TRUE on success, FALSE on any error + * + */ +OSYNC_EXPORT osync_bool osync_objtype_sink_save_hashtable(OSyncObjTypeSink *sink, OSyncError **error); + /*@}*/ #endif /* _OPENSYNC_OBJTYPE_SINK_H_ */ Modified: trunk/tools/osyncdump.c ============================================================================== --- trunk/tools/osyncdump.c Sat Mar 28 14:20:04 2009 (r5372) +++ trunk/tools/osyncdump.c Sat Mar 28 14:41:02 2009 (r5373) @@ -105,26 +105,37 @@ } +#if 0 static void print_hashtable(const char *uid, const char *hash, void *user_data) { printf("UID: %s\tHASH:%s\n", uid, hash); } +#endif static void dump_hash(OSyncGroupEnv *env, const char *objtype, const char *groupname, char *memberid) { - OSyncError *error = NULL; OSyncGroup *group = osync_group_env_find_group(env, groupname); +#if 0 /* Unused */ + OSyncError *error = NULL; long long int id = 0; OSyncMember *member = NULL; char *path = NULL; OSyncHashTable *table = NULL; - +#endif if (!group) { printf("Unable to find group with name \"%s\"\n", groupname); return; } + + printf("Dumping hashtable is currently not implemented!\n"); + return; + +/* FIXME: public interface osync_hashltable_new() is gone! + * no interface to access the disk directly! + * */ +#if 0 id = atoi(memberid); member = osync_group_find_member(group, id); if (!member) { @@ -144,12 +155,12 @@ osync_hashtable_foreach(table, print_hashtable, NULL); osync_hashtable_unref(table); - - return; error: printf("ERROR: %s", osync_error_print(&error)); osync_error_unref(&error); + +#endif } static void reset(OSyncGroupEnv *osync, char *groupname) Modified: trunk/tools/osyncplugin.c ============================================================================== --- trunk/tools/osyncplugin.c Sat Mar 28 14:20:04 2009 (r5372) +++ trunk/tools/osyncplugin.c Sat Mar 28 14:41:02 2009 (r5373) @@ -459,6 +459,9 @@ if (!osync_objtype_sink_load_anchor(sink, plugin_info, error)) return NULL; + + if (!osync_objtype_sink_load_hashtable(sink, plugin_info, error)) + return NULL; } return plugin_data; @@ -983,6 +986,9 @@ osync_context_unref(context); + if (!osync_objtype_sink_save_hashtable(sink, error)) + goto error; + return TRUE; error: |