From: <svn...@op...> - 2009-02-26 08:02:31
|
Author: bricks Date: Thu Feb 26 09:02:23 2009 New Revision: 5277 URL: http://www.opensync.org/changeset/5277 Log: Pass objtype sink userdata to all objtype sink plugin function instead of the plugin/client data fix for ticket #1018 Modified: trunk/opensync.sym trunk/opensync/client/opensync_client.c trunk/opensync/engine/opensync_obj_engine.c trunk/opensync/plugin/opensync_objtype_sink.h trunk/opensync/plugin/opensync_objtype_sink_internals.h trunk/tests/engine-tests/check_engine.c trunk/tests/mock-plugin/mock_sync.c trunk/wrapper/opensync-plugin.i Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Wed Feb 25 21:54:21 2009 (r5276) +++ trunk/opensync.sym Thu Feb 26 09:02:23 2009 (r5277) @@ -407,7 +407,6 @@ osync_objtype_sink_get_preferred_format osync_objtype_sink_get_read osync_objtype_sink_get_slowsync -osync_objtype_sink_get_userdata osync_objtype_sink_get_write osync_objtype_sink_is_available osync_objtype_sink_is_enabled Modified: trunk/opensync/client/opensync_client.c ============================================================================== --- trunk/opensync/client/opensync_client.c Wed Feb 25 21:54:21 2009 (r5276) +++ trunk/opensync/client/opensync_client.c Thu Feb 26 09:02:23 2009 (r5277) @@ -967,7 +967,7 @@ goto error; osync_plugin_info_set_sink(client->plugin_info, sink); - osync_objtype_sink_connect(sink, client->plugin_data, client->plugin_info, context); + osync_objtype_sink_connect(sink, osync_objtype_sink_get_userdata(sink), client->plugin_info, context); osync_context_unref(context); } @@ -1022,7 +1022,7 @@ goto error; osync_plugin_info_set_sink(client->plugin_info, sink); - osync_objtype_sink_connect_done(sink, client->plugin_data, client->plugin_info, context); + osync_objtype_sink_connect_done(sink, osync_objtype_sink_get_userdata(sink), client->plugin_info, context); osync_context_unref(context); } @@ -1076,7 +1076,7 @@ goto error; osync_plugin_info_set_sink(client->plugin_info, sink); - osync_objtype_sink_disconnect(sink, client->plugin_data, client->plugin_info, context); + osync_objtype_sink_disconnect(sink, osync_objtype_sink_get_userdata(sink), client->plugin_info, context); osync_context_unref(context); } @@ -1141,7 +1141,7 @@ osync_plugin_info_set_sink(client->plugin_info, sink); - osync_objtype_sink_get_changes(sink, client->plugin_data, client->plugin_info, context); + osync_objtype_sink_get_changes(sink, osync_objtype_sink_get_userdata(sink), client->plugin_info, context); osync_context_unref(context); } @@ -1200,7 +1200,7 @@ osync_plugin_info_set_sink(client->plugin_info, sink); - osync_objtype_sink_read_change(sink, client->plugin_data, client->plugin_info, change, context); + osync_objtype_sink_read_change(sink, osync_objtype_sink_get_userdata(sink), client->plugin_info, change, context); osync_context_unref(context); } @@ -1247,7 +1247,7 @@ goto error; osync_plugin_info_set_sink(client->plugin_info, sink); - osync_objtype_sink_commit_change(sink, client->plugin_data, client->plugin_info, change, context); + osync_objtype_sink_commit_change(sink, osync_objtype_sink_get_userdata(sink), client->plugin_info, change, context); osync_change_unref(change); osync_context_unref(context); @@ -1300,7 +1300,7 @@ goto error; osync_plugin_info_set_sink(client->plugin_info, sink); - osync_objtype_sink_committed_all(sink, client->plugin_data, client->plugin_info, context); + osync_objtype_sink_committed_all(sink, osync_objtype_sink_get_userdata(sink), client->plugin_info, context); osync_context_unref(context); } @@ -1354,7 +1354,7 @@ goto error; osync_plugin_info_set_sink(client->plugin_info, sink); - osync_objtype_sink_sync_done(sink, client->plugin_data, client->plugin_info, context); + osync_objtype_sink_sync_done(sink, osync_objtype_sink_get_userdata(sink), client->plugin_info, context); osync_context_unref(context); } @@ -1521,7 +1521,7 @@ osync_trace(TRACE_INTERNAL, "plugin received command %i on sending queue", osync_message_get_command(message)); if ( (osync_message_get_command(message) == OSYNC_MESSAGE_QUEUE_ERROR) - || (osync_message_get_command(message) == OSYNC_MESSAGE_QUEUE_HUP) ) { + || (osync_message_get_command(message) == OSYNC_MESSAGE_QUEUE_HUP) ) { /* The remote side disconnected. So we can now disconnect as well and then * shutdown */ if (!osync_queue_disconnect(client->outgoing, &error)) Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Wed Feb 25 21:54:21 2009 (r5276) +++ trunk/opensync/engine/opensync_obj_engine.c Thu Feb 26 09:02:23 2009 (r5277) @@ -327,7 +327,7 @@ static void _osync_obj_engine_read_ignored_callback(OSyncClientProxy *proxy, void *userdata, OSyncError *error) { OSyncSinkEngine *sinkengine = userdata; - OSyncObjEngine *engine = sinkengine->engine; + /* OSyncObjEngine *engine = sinkengine->engine; */ /* TODO: Share _generate_read_event fucntion with _osync_obj_engine_read_callback? To report errors .. and handle _timeout problems of _read_ignored call. */ @@ -1052,8 +1052,8 @@ /* Now we can multiply the winner in the mapping */ osync_trace(TRACE_INTERNAL, "Multiplying %u mappings", osync_list_length(engine->mapping_engines)); for (p = engine->mapping_engines; p; p = p->next) { - OSyncMappingEngine *mapping_engine = p->data; - if (!osync_mapping_engine_multiply(mapping_engine, error)) + OSyncMappingEngine *mapping_engine = p->data; + if (!osync_mapping_engine_multiply(mapping_engine, error)) break; } Modified: trunk/opensync/plugin/opensync_objtype_sink.h ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.h Wed Feb 25 21:54:21 2009 (r5276) +++ trunk/opensync/plugin/opensync_objtype_sink.h Thu Feb 26 09:02:23 2009 (r5277) @@ -214,21 +214,11 @@ * * @param sink Pointer to the sink * @param functions struct containing pointers to the sink functions - * @param userdata user data pointer that can be retrieved within the functions using osync_objtype_sink_get_userdata() + * @param userdata user data pointer that is passed to all objtype sink functions like connect(), commit(), ... * */ OSYNC_EXPORT void osync_objtype_sink_set_functions(OSyncObjTypeSink *sink, OSyncObjTypeSinkFunctions functions, void *userdata); -/** @brief Gets the user data from a sink - * - * Gets the user data from a sink, as previously set by osync_objtype_sink_set_functions() - * - * @param sink Pointer to the sink - * @returns the sink-specific user data - * - */ -OSYNC_EXPORT void *osync_objtype_sink_get_userdata(OSyncObjTypeSink *sink); - /** @brief Checks if a sink is enabled * Modified: trunk/opensync/plugin/opensync_objtype_sink_internals.h ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink_internals.h Wed Feb 25 21:54:21 2009 (r5276) +++ trunk/opensync/plugin/opensync_objtype_sink_internals.h Thu Feb 26 09:02:23 2009 (r5277) @@ -262,6 +262,16 @@ */ unsigned int osync_objtype_sink_get_read_timeout(OSyncObjTypeSink *sink); +/** @brief Gets the user data from a sink + * + * Gets the user data from a sink, as previously set by osync_objtype_sink_set_functions() + * + * @param sink Pointer to the sink + * @returns the sink-specific user data + * + */ +void *osync_objtype_sink_get_userdata(OSyncObjTypeSink *sink); + /*@}*/ #endif /*OPENSYNC_SINK_INTERNALS_H_*/ Modified: trunk/tests/engine-tests/check_engine.c ============================================================================== --- trunk/tests/engine-tests/check_engine.c Wed Feb 25 21:54:21 2009 (r5276) +++ trunk/tests/engine-tests/check_engine.c Thu Feb 26 09:02:23 2009 (r5277) @@ -139,6 +139,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 0); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 0); @@ -158,6 +159,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 1); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 1); @@ -177,6 +179,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 1); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 0); @@ -213,7 +216,7 @@ functions.disconnect = disconnect; functions.get_changes = get_changes; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -229,6 +232,7 @@ { mock_env *env = data; + osync_assert(env); osync_assert(env->num_connect == 1); osync_assert(env->num_disconnect == 1); osync_assert(env->num_get_changes == 1); @@ -369,6 +373,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect < 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 0); @@ -388,6 +393,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect < 3); osync_assert(env->num_get_changes == 3); @@ -407,6 +413,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes < 3); @@ -426,6 +433,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 0); @@ -445,6 +453,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 3); osync_assert(env->num_get_changes == 3); @@ -464,6 +473,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 3); @@ -500,7 +510,7 @@ functions.disconnect = disconnect2; functions.get_changes = get_changes2; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -517,7 +527,7 @@ functions.disconnect = disconnect2; functions.get_changes = get_changes2; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -534,7 +544,7 @@ functions.disconnect = disconnect2; functions.get_changes = get_changes2; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -548,7 +558,7 @@ functions.disconnect = main_disconnect2; functions.get_changes = main_get_changes2; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_set_main_sink(info, sink); osync_objtype_sink_unref(sink); @@ -564,6 +574,7 @@ { mock_env *env = data; + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 3); osync_assert(env->num_get_changes == 3); @@ -684,6 +695,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect < 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 0); @@ -704,6 +716,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect < 3); osync_assert(env->num_get_changes == 3); @@ -726,6 +739,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes < 3); @@ -746,6 +760,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 3); @@ -768,6 +783,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 0); @@ -794,6 +810,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 3); osync_assert(env->num_get_changes == 3); @@ -822,6 +839,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 3); @@ -849,6 +867,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 0); osync_assert(env->num_get_changes == 3); @@ -896,7 +915,7 @@ functions.get_changes = get_changes3; functions.sync_done = sync_done3; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -914,7 +933,7 @@ functions.get_changes = get_changes3; functions.sync_done = sync_done3; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -932,7 +951,7 @@ functions.get_changes = get_changes3; functions.sync_done = sync_done3; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -947,7 +966,7 @@ functions.get_changes = main_get_changes3; functions.sync_done = main_sync_done3; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_set_main_sink(info, sink); osync_objtype_sink_unref(sink); @@ -1085,6 +1104,7 @@ mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_assert(env); osync_assert(env->num_connect == 3); osync_assert(env->num_disconnect == 3); osync_assert(env->num_get_changes == 3); @@ -1138,7 +1158,7 @@ functions.get_changes = get_changes3; functions.sync_done = sync_done3; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1156,7 +1176,7 @@ functions.get_changes = get_changes3; functions.sync_done = sync_done3; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1174,7 +1194,7 @@ functions.get_changes = get_changes3; functions.sync_done = sync_done3; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1189,7 +1209,7 @@ functions.get_changes = main_get_changes3; functions.sync_done = main_sync_done3; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_set_main_sink(info, sink); osync_objtype_sink_unref(sink); @@ -1465,7 +1485,7 @@ functions.get_changes = get_changes5; functions.commit = commit_change5; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1667,7 +1687,7 @@ functions.get_changes = get_changes6; functions.commit = commit_change5; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1871,7 +1891,7 @@ functions.get_changes = get_changes7; functions.commit = commit_change5; - osync_objtype_sink_set_functions(sink, functions, NULL); + osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); Modified: trunk/tests/mock-plugin/mock_sync.c ============================================================================== --- trunk/tests/mock-plugin/mock_sync.c Wed Feb 25 21:54:21 2009 (r5276) +++ trunk/tests/mock-plugin/mock_sync.c Thu Feb 26 09:02:23 2009 (r5277) @@ -54,7 +54,7 @@ { osync_bool anchor_compare_match; OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); @@ -104,7 +104,7 @@ static void mock_connect_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; if (mock_get_error(info->memberid, "CONNECT_DONE_ERROR")) { osync_context_report_error(ctx, OSYNC_ERROR_EXPECTED, "Triggering CONNECT_DONE_ERROR error"); @@ -127,29 +127,45 @@ osync_trace(TRACE_EXIT, "%s", __func__); } - -static void mock_disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) +static void mock_mainsink_disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); - MockDir *dir = osync_objtype_sink_get_userdata(sink); mock_env *env = data; - - if (!dir) { - GList *o = env->directories; - for (; o; o = o->next) { - MockDir *sink_dir = o->data; - if (!g_getenv("NO_COMMITTED_ALL_CHECK")) - osync_assert(sink_dir->committed_all == TRUE); - - sink_dir->committed_all = FALSE; - } - } else { + + osync_assert(data); + + GList *o = env->directories; + for (; o; o = o->next) { + MockDir *sink_dir = o->data; if (!g_getenv("NO_COMMITTED_ALL_CHECK")) - osync_assert(dir->committed_all == TRUE); + osync_assert(sink_dir->committed_all == TRUE); + sink_dir->committed_all = FALSE; + } - dir->committed_all = FALSE; + if (mock_get_error(info->memberid, "DISCONNECT_ERROR")) { + osync_context_report_error(ctx, OSYNC_ERROR_EXPECTED, "Triggering DISCONNECT_ERROR error"); + return; } + if (mock_get_error(info->memberid, "DISCONNECT_TIMEOUT")) + return; + + osync_context_report_success(ctx); + + osync_trace(TRACE_EXIT, "%s", __func__); +} + +static void mock_disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) +{ + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); + + MockDir *dir = data; + + osync_assert(dir); + + if (!g_getenv("NO_COMMITTED_ALL_CHECK")) + osync_assert(dir->committed_all == TRUE); + dir->committed_all = FALSE; if (mock_get_error(info->memberid, "DISCONNECT_ERROR")) { @@ -172,7 +188,7 @@ static osync_bool mock_read(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; OSyncError *error = NULL; char *filename = g_strdup_printf("%s/%s", dir->path, osync_change_get_uid(change)); @@ -210,7 +226,7 @@ static osync_bool mock_write(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; OSyncError *error = NULL; OSyncData *odata = NULL; char *buffer = NULL; @@ -364,7 +380,7 @@ static void mock_get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %i, %p)", __func__, sink, info, ctx, slow_sync, data); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; OSyncError *error = NULL; osync_assert(dir->committed_all == TRUE); @@ -427,7 +443,7 @@ static void mock_commit_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; char *filename = NULL; @@ -470,7 +486,7 @@ static void mock_batch_commit(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *context, OSyncContext **contexts, OSyncChange **changes, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p, %p)", __func__, sink, info, context, contexts, changes, data); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; osync_assert(dir->committed_all == FALSE); dir->committed_all = TRUE; @@ -512,7 +528,7 @@ static void mock_committed_all(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *context, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, context, data); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; osync_assert(dir->committed_all == FALSE); dir->committed_all = TRUE; @@ -532,7 +548,7 @@ { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); - MockDir *dir = osync_objtype_sink_get_userdata(sink); + MockDir *dir = data; if (mock_get_error(info->memberid, "SYNC_DONE_ERROR")) { osync_context_report_error(ctx, OSYNC_ERROR_EXPECTED, "Triggering SYNC_DONE_ERROR error"); @@ -582,9 +598,9 @@ memset(&functions, 0, sizeof(functions)); functions.connect = mock_connect; - functions.disconnect = mock_disconnect; + functions.disconnect = mock_mainsink_disconnect; - osync_objtype_sink_set_functions(env->mainsink, functions, NULL); + osync_objtype_sink_set_functions(env->mainsink, functions, env); osync_plugin_info_set_main_sink(info, env->mainsink); } Modified: trunk/wrapper/opensync-plugin.i ============================================================================== --- trunk/wrapper/opensync-plugin.i Wed Feb 25 21:54:21 2009 (r5276) +++ trunk/wrapper/opensync-plugin.i Thu Feb 26 09:02:23 2009 (r5277) @@ -331,10 +331,12 @@ } ~ObjTypeSink() { + /* FIXME free userdata PyObject *callback_obj = osync_objtype_sink_get_userdata(self); if (callback_obj) { Py_DECREF(callback_obj); } + */ osync_objtype_sink_unref(self); } @@ -354,11 +356,11 @@ return osync_objtype_sink_nth_objformat_sink(self, nth); } - ObjFormatSink *find_objformat(ObjFormat *objformat) { - return osync_objtype_sink_find_objformat_sink(self, objformat); - } + ObjFormatSink *find_objformat(ObjFormat *objformat) { + return osync_objtype_sink_find_objformat_sink(self, objformat); + } - /* TODO: osync_objtype_sink_get_objformat_sinks with OSyncList */ + /* TODO: osync_objtype_sink_get_objformat_sinks with OSyncList */ void add_objformat(ObjFormatSink *format_sink) { osync_objtype_sink_add_objformat_sink(self, format_sink); @@ -370,14 +372,18 @@ /* TODO: set_functions */ + /* void *get_userdata() { return osync_objtype_sink_get_userdata(self); } + /* as above, but return it as a PyObject * for python code */ + /* PyObject *get_callback_obj() { return osync_objtype_sink_get_userdata(self); } + */ void get_changes(void *plugindata, PluginInfo *info, Context *ctx) { osync_objtype_sink_get_changes(self, plugindata, info, ctx); |