From: <svn...@op...> - 2009-03-29 21:44:24
|
Author: dgollub Date: Sun Mar 29 23:44:10 2009 New Revision: 5432 URL: http://www.opensync.org/changeset/5432 Log: Dropped OSyncObjTypeSinkFunctions struct from public API. Replacement are newly introduced osync_objtype_sink_set_*_func() interfaces: osync_objtype_sink_set_batch_commit_func osync_objtype_sink_set_commit_func osync_objtype_sink_set_committed_all_func osync_objtype_sink_set_connect_done_func osync_objtype_sink_set_connect_func osync_objtype_sink_set_disconnect_func osync_objtype_sink_set_get_changes_func osync_objtype_sink_set_read_func osync_objtype_sink_set_sync_done_func osync_objtype_sink_set_write_func and osync_objtype_sink_set_userdata Porting example: -OSyncObjTypeSinkFunctions functions; -memset(&functions, 0, sizeof(functions)); -functions.connect = connect_error; -functions.disconnect = disconnect; -functions.get_changes = get_changes; - -osync_objtype_sink_set_functions(sink, functions, user_data); + +osync_objtype_sink_set_connect_func(sink, connect); +osync_objtype_sink_set_disconnect_func(sink, disconnect); +osync_objtype_sink_set_get_changes_func(sink, get_changes); + +osync_objtype_sink_set_userdata(sink, user_data); fixes #1086 Modified: trunk/docs/examples/plugins/src/plugin.c trunk/docs/examples/plugins/src/simple_plugin.c trunk/opensync.sym trunk/opensync/plugin/opensync_objtype_sink.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/engine-tests/check_engine_error.c trunk/tests/mock-plugin/mock_sync.c Modified: trunk/docs/examples/plugins/src/plugin.c ============================================================================== --- trunk/docs/examples/plugins/src/plugin.c Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/docs/examples/plugins/src/plugin.c Sun Mar 29 23:44:10 2009 (r5432) @@ -326,19 +326,19 @@ } /* Every sink can have different functions ... */ - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect; - functions.disconnect = disconnect; - functions.get_changes = get_changes; - functions.commit = commit_change; - functions.sync_done = sync_done; + osync_objtype_sink_set_connect_func(sink, connect); + osync_objtype_sink_set_disconnect_func(sink, disconnect); + osync_objtype_sink_set_get_changes_func(sink, get_changes); + osync_objtype_sink_set_commit_func(sink, commit_change); + osync_objtype_sink_set_sync_done_func(sink, sync_done); - /* The last arguemnt is the userdata you get passed inside - * plugin sink functinos. + /* + * If you need plugin specific userdata passed to this + * plugin sink functions. You can set it with: + * + * osync_objtype_sink_set_userdata(sink, userdata_pointer); */ - osync_objtype_sink_set_functions(sink, functions, NULL); - + /* Request a Hahstable here - if you need it. * It will be later available via osync_objtype_sink_get_hashtable(OSyncObjTypeSink *) * in the plugin sink functions (e.g. connect, get_changes, commit, ...) Modified: trunk/docs/examples/plugins/src/simple_plugin.c ============================================================================== --- trunk/docs/examples/plugins/src/simple_plugin.c Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/docs/examples/plugins/src/simple_plugin.c Sun Mar 29 23:44:10 2009 (r5432) @@ -255,17 +255,18 @@ } /* Every sink can have different functions ... */ - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect; - functions.disconnect = disconnect; - functions.get_changes = get_changes; - functions.commit = commit_change; - functions.sync_done = sync_done; + osync_objtype_sink_set_connect_func(sink, connect); + osync_objtype_sink_set_disconnect_func(sink, disconnect); + osync_objtype_sink_set_get_changes_func(sink, get_changes); + osync_objtype_sink_set_commit_func(sink, commit_change); + osync_objtype_sink_set_sync_done_func(sink, sync_done); - /* We pass the OSyncFileDir 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, NULL); + /* + * If you need plugin specific userdata passed to this + * plugin sink functions. You can set it with: + * + * osync_objtype_sink_set_userdata(sink, userdata_pointer); + */ } osync_list_free(list); Modified: trunk/opensync.sym ============================================================================== --- trunk/opensync.sym Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/opensync.sym Sun Mar 29 23:44:10 2009 (r5432) @@ -392,22 +392,32 @@ osync_objtype_sink_remove_objformat_sink osync_objtype_sink_save_hashtable osync_objtype_sink_set_available +osync_objtype_sink_set_batch_commit_func osync_objtype_sink_set_batchcommit_timeout +osync_objtype_sink_set_commit_func osync_objtype_sink_set_commit_timeout +osync_objtype_sink_set_committed_all_func osync_objtype_sink_set_committedall_timeout +osync_objtype_sink_set_connect_done_func +osync_objtype_sink_set_connect_func osync_objtype_sink_set_connect_timeout +osync_objtype_sink_set_disconnect_func osync_objtype_sink_set_disconnect_timeout osync_objtype_sink_set_enabled -osync_objtype_sink_set_functions +osync_objtype_sink_set_get_changes_func osync_objtype_sink_set_getchanges osync_objtype_sink_set_getchanges_timeout osync_objtype_sink_set_name osync_objtype_sink_set_preferred_format osync_objtype_sink_set_read +osync_objtype_sink_set_read_func osync_objtype_sink_set_read_timeout osync_objtype_sink_set_slowsync +osync_objtype_sink_set_sync_done_func osync_objtype_sink_set_syncdone_timeout +osync_objtype_sink_set_userdata osync_objtype_sink_set_write +osync_objtype_sink_set_write_func osync_objtype_sink_set_write_timeout osync_objtype_sink_sync_done osync_objtype_sink_unref Modified: trunk/opensync/plugin/opensync_objtype_sink.c ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.c Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/opensync/plugin/opensync_objtype_sink.c Sun Mar 29 23:44:10 2009 (r5432) @@ -232,22 +232,6 @@ osync_objformat_sink_unref(objformatsink); } -void osync_objtype_sink_set_functions(OSyncObjTypeSink *sink, OSyncObjTypeSinkFunctions functions, void *userdata) -{ - osync_assert(sink); - sink->functions = functions; - sink->userdata = userdata; - - if (functions.read) - sink->func_read = TRUE; - - if (functions.get_changes) - sink->func_getchanges = TRUE; - - if (functions.write) - sink->func_write = TRUE; -} - osync_bool osync_objtype_sink_get_function_read(OSyncObjTypeSink *sink) { osync_assert(sink); @@ -833,3 +817,78 @@ return FALSE; } +void osync_objtype_sink_set_userdata(OSyncObjTypeSink *sink, void *userdata) +{ + osync_return_if_fail(sink); + sink->userdata = userdata; +} + +void osync_objtype_sink_set_connect_func(OSyncObjTypeSink *sink, OSyncSinkConnectFn connect_func) +{ + osync_return_if_fail(sink); + sink->functions.connect = connect_func; +} + +void osync_objtype_sink_set_connect_done_func(OSyncObjTypeSink *sink, OSyncSinkConnectDoneFn connect_done_func) +{ + osync_return_if_fail(sink); + sink->functions.connect_done = connect_done_func; +} + +void osync_objtype_sink_set_get_changes_func(OSyncObjTypeSink *sink, OSyncSinkGetChangesFn get_changes_func) +{ + osync_return_if_fail(sink); + sink->functions.get_changes = get_changes_func; + + if (sink->functions.get_changes) + sink->func_getchanges = TRUE; +} + +void osync_objtype_sink_set_commit_func(OSyncObjTypeSink *sink, OSyncSinkCommitFn commit_func) +{ + osync_return_if_fail(sink); + sink->functions.commit = commit_func; +} + +void osync_objtype_sink_set_write_func(OSyncObjTypeSink *sink, OSyncSinkWriteFn write_func) +{ + osync_return_if_fail(sink); + sink->functions.write = write_func; + + if (sink->functions.write) + sink->func_write = TRUE; +} + +void osync_objtype_sink_set_committed_all_func(OSyncObjTypeSink *sink, OSyncSinkCommittedAllFn committed_all_func) +{ + osync_return_if_fail(sink); + sink->functions.committed_all = committed_all_func; +} + +void osync_objtype_sink_set_read_func(OSyncObjTypeSink *sink, OSyncSinkReadFn read_func) +{ + osync_return_if_fail(sink); + sink->functions.read = read_func; + + if (sink->functions.read) + sink->func_read = TRUE; +} + +void osync_objtype_sink_set_batch_commit_func(OSyncObjTypeSink *sink, OSyncSinkBatchCommitFn batch_commit_func) +{ + osync_return_if_fail(sink); + sink->functions.batch_commit = batch_commit_func; +} + +void osync_objtype_sink_set_sync_done_func(OSyncObjTypeSink *sink, OSyncSinkSyncDoneFn sync_done_func) +{ + osync_return_if_fail(sink); + sink->functions.sync_done = sync_done_func; +} + +void osync_objtype_sink_set_disconnect_func(OSyncObjTypeSink *sink, OSyncSinkConnectFn disconnect_func) +{ + osync_return_if_fail(sink); + sink->functions.disconnect = disconnect_func; +} + Modified: trunk/opensync/plugin/opensync_objtype_sink.h ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink.h Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/opensync/plugin/opensync_objtype_sink.h Sun Mar 29 23:44:10 2009 (r5432) @@ -40,19 +40,6 @@ typedef void (* OSyncSinkSyncDoneFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); typedef void (* OSyncSinkConnectDoneFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data); -typedef struct OSyncObjTypeSinkFunctions { - OSyncSinkConnectFn connect; - OSyncSinkDisconnectFn disconnect; - OSyncSinkGetChangesFn get_changes; - OSyncSinkCommitFn commit; - OSyncSinkWriteFn write; - OSyncSinkCommittedAllFn committed_all; - OSyncSinkReadFn read; - OSyncSinkBatchCommitFn batch_commit; - OSyncSinkSyncDoneFn sync_done; - OSyncSinkConnectDoneFn connect_done; -} OSyncObjTypeSinkFunctions; - /** @brief Creates a new main sink * * Main sink is objtype neutral and should be used for object type @@ -215,22 +202,6 @@ */ OSYNC_EXPORT void osync_objtype_sink_remove_objformat_sink(OSyncObjTypeSink *sink, OSyncObjFormatSink *objformatsink); - -/** @brief Sets the sink functions and user data - * - * Sets the functions used by the sink, as well as a user data pointer that - * you can retrieve within the functions. In most cases you will be able to - * share the same functions between multiple sinks and just have different - * user data for each one. - * - * @param sink Pointer to the sink - * @param functions struct containing pointers to the sink functions - * @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 Checks if a sink is enabled * * @param sink Pointer to the sink @@ -548,6 +519,31 @@ */ OSYNC_EXPORT osync_bool osync_objtype_sink_save_hashtable(OSyncObjTypeSink *sink, OSyncError **error); + +OSYNC_EXPORT void osync_objtype_sink_set_userdata(OSyncObjTypeSink *sink, void *userdata); + +OSYNC_EXPORT void osync_objtype_sink_set_connect_func(OSyncObjTypeSink *sink, OSyncSinkConnectFn connect_func); + +OSYNC_EXPORT void osync_objtype_sink_set_connect_done_func(OSyncObjTypeSink *sink, OSyncSinkConnectDoneFn connect_done_func); + +OSYNC_EXPORT void osync_objtype_sink_set_get_changes_func(OSyncObjTypeSink *sink, OSyncSinkGetChangesFn get_changes_func); + +OSYNC_EXPORT void osync_objtype_sink_set_commit_func(OSyncObjTypeSink *sink, OSyncSinkCommitFn commit_func); + +OSYNC_EXPORT void osync_objtype_sink_set_write_func(OSyncObjTypeSink *sink, OSyncSinkWriteFn write_func); + +OSYNC_EXPORT void osync_objtype_sink_set_committed_all_func(OSyncObjTypeSink *sink, OSyncSinkCommittedAllFn committed_all_func); + +OSYNC_EXPORT void osync_objtype_sink_set_read_func(OSyncObjTypeSink *sink, OSyncSinkReadFn read_func); + +OSYNC_EXPORT void osync_objtype_sink_set_batch_commit_func(OSyncObjTypeSink *sink, OSyncSinkBatchCommitFn batch_commit_func); + +OSYNC_EXPORT void osync_objtype_sink_set_sync_done_func(OSyncObjTypeSink *sink, OSyncSinkSyncDoneFn sync_done_func); + +OSYNC_EXPORT void osync_objtype_sink_set_connect_done_func(OSyncObjTypeSink *sink, OSyncSinkConnectDoneFn connect_done_func); + +OSYNC_EXPORT void osync_objtype_sink_set_disconnect_func(OSyncObjTypeSink *sink, OSyncSinkConnectFn disconnect_func); + /*@}*/ #endif /* _OPENSYNC_OBJTYPE_SINK_H_ */ Modified: trunk/opensync/plugin/opensync_objtype_sink_internals.h ============================================================================== --- trunk/opensync/plugin/opensync_objtype_sink_internals.h Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/opensync/plugin/opensync_objtype_sink_internals.h Sun Mar 29 23:44:10 2009 (r5432) @@ -21,6 +21,8 @@ #ifndef _OPENSYNC_OBJTYPE_SINK_INTERNALS_H_ #define _OPENSYNC_OBJTYPE_SINK_INTERNALS_H_ +#include "opensync_objtype_sink.h" + /** * @defgroup OSyncObjTypeSinkInternalAPI OpenSync Object Type Sink Internals * @ingroup OSyncPluginPrivate @@ -30,6 +32,18 @@ /*@{*/ +typedef struct OSyncObjTypeSinkFunctions { + OSyncSinkConnectFn connect; + OSyncSinkDisconnectFn disconnect; + OSyncSinkGetChangesFn get_changes; + OSyncSinkCommitFn commit; + OSyncSinkWriteFn write; + OSyncSinkCommittedAllFn committed_all; + OSyncSinkReadFn read; + OSyncSinkBatchCommitFn batch_commit; + OSyncSinkSyncDoneFn sync_done; + OSyncSinkConnectDoneFn connect_done; +} OSyncObjTypeSinkFunctions; /** @brief Check if sink has an anchor request. * Modified: trunk/tests/engine-tests/check_engine.c ============================================================================== --- trunk/tests/engine-tests/check_engine.c Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/tests/engine-tests/check_engine.c Sun Mar 29 23:44:10 2009 (r5432) @@ -210,13 +210,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect1; - functions.disconnect = disconnect; - functions.get_changes = get_changes; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, connect1); + osync_objtype_sink_set_disconnect_func(sink, disconnect); + osync_objtype_sink_set_get_changes_func(sink, get_changes); + + /* ObjTypeSink port - functions and userdata never got set! */ + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -504,13 +504,12 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect2; - functions.disconnect = disconnect2; - functions.get_changes = get_changes2; + osync_objtype_sink_set_connect_func(sink, connect2); + osync_objtype_sink_set_disconnect_func(sink, disconnect2); + osync_objtype_sink_set_get_changes_func(sink, get_changes2); + + osync_objtype_sink_set_userdata(sink, env); - osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -521,13 +520,14 @@ format_sink = osync_objformat_sink_new("vcard", error); osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); + + osync_objtype_sink_set_connect_func(sink, connect2); + osync_objtype_sink_set_disconnect_func(sink, disconnect2); + osync_objtype_sink_set_get_changes_func(sink, get_changes2); + + osync_objtype_sink_set_userdata(sink, env); - memset(&functions, 0, sizeof(functions)); - functions.connect = connect2; - functions.disconnect = disconnect2; - functions.get_changes = get_changes2; - osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -539,12 +539,12 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - memset(&functions, 0, sizeof(functions)); - functions.connect = connect2; - functions.disconnect = disconnect2; - functions.get_changes = get_changes2; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, connect2); + osync_objtype_sink_set_disconnect_func(sink, disconnect2); + osync_objtype_sink_set_get_changes_func(sink, get_changes2); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -553,12 +553,12 @@ if (!sink) goto error; - memset(&functions, 0, sizeof(functions)); - functions.connect = main_connect2; - functions.disconnect = main_disconnect2; - functions.get_changes = main_get_changes2; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, main_connect2); + osync_objtype_sink_set_disconnect_func(sink, main_disconnect2); + osync_objtype_sink_set_get_changes_func(sink, main_get_changes2); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_set_main_sink(info, sink); osync_objtype_sink_unref(sink); @@ -908,14 +908,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect3; - functions.disconnect = disconnect3; - functions.get_changes = get_changes3; - functions.sync_done = sync_done3; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, connect3); + osync_objtype_sink_set_disconnect_func(sink, disconnect3); + osync_objtype_sink_set_get_changes_func(sink, get_changes3); + osync_objtype_sink_set_sync_done_func(sink, sync_done3); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -926,14 +925,14 @@ format_sink = osync_objformat_sink_new("vcard", error); osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - - memset(&functions, 0, sizeof(functions)); - functions.connect = connect3; - functions.disconnect = disconnect3; - functions.get_changes = get_changes3; - functions.sync_done = sync_done3; - - osync_objtype_sink_set_functions(sink, functions, env); + + osync_objtype_sink_set_connect_func(sink, connect3); + osync_objtype_sink_set_disconnect_func(sink, disconnect3); + osync_objtype_sink_set_get_changes_func(sink, get_changes3); + osync_objtype_sink_set_sync_done_func(sink, sync_done3); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -945,13 +944,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - memset(&functions, 0, sizeof(functions)); - functions.connect = connect3; - functions.disconnect = disconnect3; - functions.get_changes = get_changes3; - functions.sync_done = sync_done3; + osync_objtype_sink_set_connect_func(sink, connect3); + osync_objtype_sink_set_disconnect_func(sink, disconnect3); + osync_objtype_sink_set_get_changes_func(sink, get_changes3); + osync_objtype_sink_set_sync_done_func(sink, sync_done3); + + osync_objtype_sink_set_userdata(sink, env); - osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -960,13 +959,13 @@ if (!sink) goto error; - memset(&functions, 0, sizeof(functions)); - functions.connect = main_connect3; - functions.disconnect = main_disconnect3; - functions.get_changes = main_get_changes3; - functions.sync_done = main_sync_done3; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, main_connect3); + osync_objtype_sink_set_disconnect_func(sink, main_disconnect3); + osync_objtype_sink_set_get_changes_func(sink, main_get_changes3); + osync_objtype_sink_set_sync_done_func(sink, main_sync_done3); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_set_main_sink(info, sink); osync_objtype_sink_unref(sink); @@ -1151,14 +1150,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect3; - functions.disconnect = disconnect3; - functions.get_changes = get_changes3; - functions.sync_done = sync_done3; + osync_objtype_sink_set_connect_func(sink, connect3); + osync_objtype_sink_set_disconnect_func(sink, disconnect3); + osync_objtype_sink_set_get_changes_func(sink, get_changes3); + osync_objtype_sink_set_sync_done_func(sink, sync_done3); + + osync_objtype_sink_set_userdata(sink, env); - osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1170,13 +1168,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - memset(&functions, 0, sizeof(functions)); - functions.connect = connect3; - functions.disconnect = disconnect3; - functions.get_changes = get_changes3; - functions.sync_done = sync_done3; + osync_objtype_sink_set_connect_func(sink, connect3); + osync_objtype_sink_set_disconnect_func(sink, disconnect3); + osync_objtype_sink_set_get_changes_func(sink, get_changes3); + osync_objtype_sink_set_sync_done_func(sink, sync_done3); + + osync_objtype_sink_set_userdata(sink, env); - osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1188,13 +1186,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - memset(&functions, 0, sizeof(functions)); - functions.connect = connect3; - functions.disconnect = disconnect3; - functions.get_changes = get_changes3; - functions.sync_done = sync_done3; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, connect3); + osync_objtype_sink_set_disconnect_func(sink, disconnect3); + osync_objtype_sink_set_get_changes_func(sink, get_changes3); + osync_objtype_sink_set_sync_done_func(sink, sync_done3); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1203,13 +1201,13 @@ if (!sink) goto error; - memset(&functions, 0, sizeof(functions)); - functions.connect = main_connect3; - functions.disconnect = main_disconnect4; - functions.get_changes = main_get_changes3; - functions.sync_done = main_sync_done3; + osync_objtype_sink_set_connect_func(sink, main_connect3); + osync_objtype_sink_set_disconnect_func(sink, main_disconnect4); + osync_objtype_sink_set_get_changes_func(sink, main_get_changes3); + osync_objtype_sink_set_sync_done_func(sink, main_sync_done3); + + osync_objtype_sink_set_userdata(sink, env); - osync_objtype_sink_set_functions(sink, functions, env); osync_plugin_info_set_main_sink(info, sink); osync_objtype_sink_unref(sink); @@ -1478,14 +1476,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect5; - functions.disconnect = disconnect5; - functions.get_changes = get_changes5; - functions.commit = commit_change5; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, connect5); + osync_objtype_sink_set_disconnect_func(sink, disconnect5); + osync_objtype_sink_set_get_changes_func(sink, get_changes5); + osync_objtype_sink_set_commit_func(sink, commit_change5); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1684,14 +1681,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect5; - functions.disconnect = disconnect5; - functions.get_changes = get_changes6; - functions.commit = commit_change5; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, connect5); + osync_objtype_sink_set_disconnect_func(sink, disconnect5); + osync_objtype_sink_set_get_changes_func(sink, get_changes6); + osync_objtype_sink_set_commit_func(sink, commit_change5); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); @@ -1888,14 +1884,13 @@ osync_objtype_sink_add_objformat_sink(sink, format_sink); osync_objformat_sink_unref(format_sink); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect5; - functions.disconnect = disconnect5; - functions.get_changes = get_changes7; - functions.commit = commit_change5; - - osync_objtype_sink_set_functions(sink, functions, env); + osync_objtype_sink_set_connect_func(sink, connect5); + osync_objtype_sink_set_disconnect_func(sink, disconnect5); + osync_objtype_sink_set_get_changes_func(sink, get_changes7); + osync_objtype_sink_set_commit_func(sink, commit_change5); + + osync_objtype_sink_set_userdata(sink, env); + osync_plugin_info_add_objtype(info, sink); osync_objtype_sink_unref(sink); Modified: trunk/tests/engine-tests/check_engine_error.c ============================================================================== --- trunk/tests/engine-tests/check_engine_error.c Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/tests/engine-tests/check_engine_error.c Sun Mar 29 23:44:10 2009 (r5432) @@ -137,13 +137,13 @@ OSyncObjFormatSink *formatsink = osync_objformat_sink_new("mockformat1", error); osync_objtype_sink_add_objformat_sink(sink, formatsink); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = connect_error; - functions.disconnect = disconnect; - functions.get_changes = get_changes; - - osync_objtype_sink_set_functions(sink, functions, NULL); + + osync_objtype_sink_set_connect_func(sink, connect_error); + osync_objtype_sink_set_disconnect_func(sink, disconnect); + osync_objtype_sink_set_get_changes_func(sink, get_changes); + + /* No sink userdata */ + 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 Sun Mar 29 20:29:36 2009 (r5431) +++ trunk/tests/mock-plugin/mock_sync.c Sun Mar 29 23:44:10 2009 (r5432) @@ -602,13 +602,11 @@ if (mock_get_error(info->memberid, "MAINSINK_CONNECT")) { env->mainsink = osync_objtype_main_sink_new(error); - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); + osync_objtype_sink_set_connect_func(env->mainsink, mock_connect); + osync_objtype_sink_set_disconnect_func(env->mainsink, mock_mainsink_disconnect); - functions.connect = mock_connect; - functions.disconnect = mock_mainsink_disconnect; + osync_objtype_sink_set_userdata(env->mainsink, env); - osync_objtype_sink_set_functions(env->mainsink, functions, env); osync_plugin_info_set_main_sink(info, env->mainsink); } @@ -653,33 +651,29 @@ /* Sanity check for connect_done */ dir->connect_done = TRUE; - /* All sinks have the same functions of course */ - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - if (!mock_get_error(info->memberid, "MAINSINK_CONNECT")) { - functions.connect = mock_connect; - functions.connect_done = mock_connect_done; - functions.disconnect = mock_disconnect; + osync_objtype_sink_set_connect_func(sink, mock_connect); + osync_objtype_sink_set_connect_done_func(sink, mock_connect_done); + osync_objtype_sink_set_disconnect_func(sink, mock_disconnect); } - functions.get_changes = mock_get_changes; + osync_objtype_sink_set_get_changes_func(sink, mock_get_changes); //Rewrite the batch commit functions so we can enable them if necessary if (mock_get_error(info->memberid, "BATCH_COMMIT")) { osync_trace(TRACE_INTERNAL, "Enabling batch_commit on %p:%s", sink, osync_objtype_sink_get_name(sink) ? osync_objtype_sink_get_name(sink) : "None"); - functions.batch_commit = mock_batch_commit; + osync_objtype_sink_set_batch_commit_func(sink, mock_batch_commit); } else { - functions.committed_all = mock_committed_all; - functions.commit = mock_commit_change; + osync_objtype_sink_set_committed_all_func(sink, mock_committed_all); + osync_objtype_sink_set_commit_func(sink, mock_commit_change); } - functions.read = mock_read; - functions.write = mock_write; - functions.sync_done = mock_sync_done; + osync_objtype_sink_set_read_func(sink, mock_read); + osync_objtype_sink_set_write_func(sink, mock_write); + osync_objtype_sink_set_sync_done_func(sink, mock_sync_done); /* We pass the MockDir 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, dir); + osync_objtype_sink_set_userdata(sink, dir); /* Request an Anchor */ osync_objtype_sink_enable_anchor(sink, TRUE); |