From: <dg...@su...> - 2009-01-11 02:23:04
|
Author: dgollub Date: Sun Jan 11 03:22:24 2009 New Revision: 5089 URL: http://www.opensync.org/changeset/5089 Log: Introduce +osync_objtype_sink_load_anchor(), which is primarly of interest for unittesting (e.g. "osyncplugin" tool). 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/osyncplugin.c Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Sun Jan 11 01:25:49 2009 (r5088) +++ trunk/opensync.sym Sun Jan 11 03:22:24 2009 (r5089) @@ -408,6 +408,7 @@ osync_objtype_sink_get_write osync_objtype_sink_is_available osync_objtype_sink_is_enabled +osync_objtype_sink_load_anchor osync_objtype_sink_new osync_objtype_sink_nth_objformat_sink osync_objtype_sink_num_objformat_sinks Modified: trunk/opensync/client/opensync_client.c ============================================================================== --- trunk/opensync/client/opensync_client.c Sun Jan 11 01:25:49 2009 (r5088) +++ trunk/opensync/client/opensync_client.c Sun Jan 11 03:22:24 2009 (r5089) @@ -42,8 +42,6 @@ #include "opensync_client_internals.h" #include "opensync_client_private.h" -#include "helper/opensync_anchor_internals.h" - #ifdef OPENSYNC_UNITTESTS #include "plugin/opensync_plugin_info_private.h" /* FIXME: access directly private header */ #endif @@ -564,7 +562,6 @@ char *groupname = NULL; char *configdir = NULL; char *formatdir = NULL; - char *anchorpath = NULL; int haspluginconfig = 0; OSyncPluginConfig *config = NULL; OSyncQueue *outgoing = NULL; @@ -695,35 +692,14 @@ goto error; } - - - /* FIXME: Get rid of file lcoation! - * Later with fruther OSyncDB modifications this should be file-hiarchy indepdendent. - * And The first arg should just consists of the Member ID - */ - anchorpath = osync_strdup_printf("%s%canchor.db", - osync_plugin_info_get_configdir(client->plugin_info), - G_DIR_SEPARATOR); - num_sinks = osync_plugin_info_num_objtypes(client->plugin_info); for (n = 0; n < num_sinks; n++) { - OSyncAnchor *anchor = NULL; sink = osync_plugin_info_nth_objtype(client->plugin_info, n); - - if (!osync_objtype_sink_has_anchor(sink)) - continue; - - anchor = osync_anchor_new(anchorpath, objtype, error); - if (!anchor) { - osync_free(anchorpath); + if (!osync_objtype_sink_load_anchor(sink, client->plugin_info, error)) { goto error_finalize; } - - osync_objtype_sink_set_anchor(sink, anchor); - } - osync_free(anchorpath); reply = osync_message_new_reply(message, error); if (!reply) Modified: trunk/opensync/plugin/opensync_objtype_sink.c ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.c Sun Jan 11 01:25:49 2009 (r5088) +++ trunk/opensync/plugin/opensync_objtype_sink.c Sun Jan 11 03:22:24 2009 (r5089) @@ -26,6 +26,8 @@ #include "opensync/helper/opensync_anchor_internals.h" +#include "opensync_plugin_info.h" /* due to osync_plugin_info_get_configdir() */ + #include "opensync_objtype_sink.h" #include "opensync_objtype_sink_private.h" @@ -703,3 +705,35 @@ return sink->timeout.read; } +osync_bool osync_objtype_sink_load_anchor(OSyncObjTypeSink *sink, OSyncPluginInfo *plugin_info, OSyncError **error) +{ + char *anchorpath; + OSyncAnchor *anchor = NULL; + + osync_assert(sink); + + if (!osync_objtype_sink_has_anchor(sink)) + return TRUE; + + /* FIXME: Get rid of file lcoation! + * Later with fruther OSyncDB modifications this should be file-hiarchy indepdendent. + * And The first arg should just consists of the Member ID + */ + anchorpath = osync_strdup_printf("%s%canchor.db", + osync_plugin_info_get_configdir(plugin_info), + G_DIR_SEPARATOR); + + anchor = osync_anchor_new(anchorpath, sink->objtype, error); + if (!anchor) + goto error; + + osync_objtype_sink_set_anchor(sink, anchor); + + osync_free(anchorpath); + + return TRUE; +error: + osync_free(anchorpath); + return FALSE; +} + Modified: trunk/opensync/plugin/opensync_objtype_sink.h ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.h Sun Jan 11 01:25:49 2009 (r5088) +++ trunk/opensync/plugin/opensync_objtype_sink.h Sun Jan 11 03:22:24 2009 (r5089) @@ -535,6 +535,19 @@ */ OSYNC_EXPORT void osync_objtype_sink_set_read_timeout(OSyncObjTypeSink *sink, unsigned int timeout); +/*! @brief Load the Anchor for a specific Sink if requested + * + * Load (i.e. connects) to the Anchor. If no Anchor is requested for this sink + * this functions just returns TRUE. + * + * @param sink Pointer to the sink + * @param info Pointer to the plugin info object + * @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_load_anchor(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncError **error); + /*@}*/ #endif /* _OPENSYNC_OBJTYPE_SINK_H_ */ Modified: trunk/tools/osyncplugin.c ============================================================================== --- trunk/tools/osyncplugin.c Sun Jan 11 01:25:49 2009 (r5088) +++ trunk/tools/osyncplugin.c Sun Jan 11 03:22:24 2009 (r5089) @@ -449,8 +449,16 @@ static void *plugin_initialize(OSyncError **error) { + unsigned int n, num_sinks = osync_plugin_info_num_objtypes(plugin_info); void *plugin_data = osync_plugin_initialize(plugin, plugin_info, error); - + + + for (n = 0; n < num_sinks; n++) { + OSyncObjTypeSink *sink = osync_plugin_info_nth_objtype(plugin_info, n); + + if (!osync_objtype_sink_load_anchor(sink, plugin_info, error)) + return NULL; + } return plugin_data; } |