From: <dg...@su...> - 2009-01-17 00:09:06
|
Author: Graham Cobb Date: Sat Jan 17 01:08:04 2009 New Revision: 5175 URL: http://www.opensync.org/changeset/5175 Log: Merge API changes from trunk r:5174 Modified: branches/timeout/docs/examples/plugins/src/format.c branches/timeout/docs/examples/plugins/src/plugin.c branches/timeout/docs/examples/plugins/src/simple_plugin.c branches/timeout/opensync/format/opensync_format_env.c branches/timeout/opensync/plugin/opensync_objtype_sink.c branches/timeout/opensync/plugin/opensync_objtype_sink.h branches/timeout/tests/engine-tests/check_engine.c branches/timeout/tests/engine-tests/check_engine_error.c branches/timeout/tests/mock-plugin/mock_sync.c Modified: branches/timeout/docs/examples/plugins/src/format.c ============================================================================== --- branches/timeout/docs/examples/plugins/src/format.c Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/docs/examples/plugins/src/format.c Sat Jan 17 01:08:04 2009 (r5175) @@ -9,12 +9,12 @@ #include <opensync/opensync.h> #include <opensync/opensync-format.h> -typedef struct format_data { +typedef struct converter_data { char *data; -} format_data; +} converter_data; -static OSyncConvCmpResult compare_format1(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize) +static OSyncConvCmpResult compare_format1(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *data) { /* * This function can be used to compare two types of your formats. @@ -97,7 +97,7 @@ return TRUE; } -static void destroy_format1(char *input, unsigned int size) +static void destroy_format1(char *input, unsigned int size, void *data) { /* * Here you have to free the data allocated by your format @@ -105,7 +105,7 @@ */ } -static osync_bool duplicate_format1(const char *uid, const char *input, unsigned int insize, char **newuid, char **output, unsigned int *outsize, osync_bool *dirty, OSyncError **error) +static osync_bool duplicate_format1(const char *uid, const char *input, unsigned int insize, char **newuid, char **output, unsigned int *outsize, osync_bool *dirty, void *data, OSyncError **error) { /* * This function can be used to duplicate your format. @@ -120,7 +120,7 @@ return TRUE; } -static char *print_format1(const char *data, unsigned int size) +static char *print_format1(const char *data, unsigned int size, void *user_data) { /* * If your format is not in a human printable format already @@ -132,6 +132,24 @@ return NULL; } +void *init_format1(OSyncError **error) { + /* + * If your format needs specific data e.g. a XML Schema file + * for validation it is possible to load the data in this + * function. If the data should be passes to all format + * functions it has to be returned as a pointer. + */ + char *format_specific_data = osync_try_malloc0(0, error); + return (void *)format_specific_data; +} + +void finialize_format1(void *data) { + /* + * Release all format data + */ + osync_free(data); +} + osync_bool get_format_info(OSyncFormatEnv *env, OSyncError **error) { /* @@ -146,6 +164,8 @@ osync_objformat_set_duplicate_func(format, duplicate_format1); osync_objformat_set_print_func(format, print_format1); + osync_objformat_set_initialize_func(format, init_format1); + osync_objformat_set_finalize_func(format, finialize_format1); osync_format_env_register_objformat(env, format); osync_objformat_unref(format); @@ -153,25 +173,26 @@ return TRUE; } -void *initialize(const char* config, OSyncError **error) +void *initialize_converter(const char* config, OSyncError **error) { /* * Here you can create converter specific data. * If you return the converter specific data, it is passed - * to the conversion and detector function as void *userdata + * to the conversion and detector function as void *userdata. + * Converter specific data could be e.g. a XSLT file */ - format_data *userdata = osync_try_malloc0(sizeof(format_data), error); + converter_data *userdata = osync_try_malloc0(sizeof(converter_data), error); return (void*)userdata; } -void finalize(void *userdata) +void finalize_converter(void *userdata) { /* * Here you can free all your converter specific data. */ - format_data *formatdata = (format_data*)userdata; - osync_free(formatdata->data); - osync_free(formatdata); + converter_data *converterdata = (converter_data*)userdata; + osync_free(converterdata->data); + osync_free(converterdata); } osync_bool get_conversion_info(OSyncFormatEnv *env, OSyncError **error) @@ -198,8 +219,8 @@ if (!conv) return FALSE; /* set init and finalize functions */ - osync_converter_set_initialize_func(conv, initialize); - osync_converter_set_finalize_func(conv, finalize); + osync_converter_set_initialize_func(conv, initialize_converter); + osync_converter_set_finalize_func(conv, finalize_converter); /* register converter */ osync_format_env_register_converter(env, conv); osync_converter_unref(conv); Modified: branches/timeout/docs/examples/plugins/src/plugin.c ============================================================================== --- branches/timeout/docs/examples/plugins/src/plugin.c Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/docs/examples/plugins/src/plugin.c Sat Jan 17 01:08:04 2009 (r5175) @@ -24,16 +24,15 @@ osync_free(env); } -static void connect(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, userdata); //Each time you get passed a context (which is used to track //calls to your plugin) you can get the data your returned in //initialize via this call: // plugin_environment *env = (plugin_environment *)userdata; - //The sink specific userdata you can get with this calls: - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + //The sink specific userdata you can get with this call: sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); @@ -63,14 +62,18 @@ //you can also use the anchor system to detect a device reset //or some parameter change here. Check the docs to see how it works - char *lanchor = NULL; //Now you get the last stored anchor from the device - char *anchorpath = osync_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); - - if (!osync_anchor_compare(anchorpath, "lanchor", lanchor)) + OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); + osync_bool anchormatch; + + if (!osync_anchor_compare(anchor, "lanchor", &anchormatch, &error)) { + /* anchor couldn't be compared */ + goto error; + } + if (!anchormatch) { + /* request slow sync */ osync_objtype_sink_set_slowsync(sink, TRUE); - - osync_free(anchorpath); + } osync_context_report_success(ctx); osync_trace(TRACE_EXIT, "%s", __func__); @@ -82,13 +85,12 @@ osync_error_unref(&error); } -static void get_changes(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, userdata); //plugin_environment *env = (plugin_environment *)userdata; OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; @@ -96,9 +98,8 @@ //If you use opensync hashtables you can detect if you need //to do a slow-sync and set this on the hastable directly //otherwise you have to make 2 function like "get_changes" and - //"get_all" and decide which to use using - //osync_objtype_sink_get_slow_sync - if (osync_objtype_sink_get_slowsync(sinkenv->sink)) { + //"get_all" and decide which to use + if (slow_sync) { osync_trace(TRACE_INTERNAL, "Slow sync requested"); if (osync_hashtable_slowsync(sinkenv->hashtable, &error)) { @@ -217,11 +218,10 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void commit_change(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void commit_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *userdata) { //plugin_environment *env = (plugin_environment *)userdata; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); /* @@ -254,21 +254,21 @@ osync_context_report_success(ctx); } -static void sync_done(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { /* * This function will only be called if the sync was successful */ OSyncError *error = NULL; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); //If we use anchors we have to update it now. //Now you get/calculate the current anchor of the device - char *lanchor = NULL; - char *anchorpath = osync_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); - osync_anchor_update(anchorpath, "lanchor", lanchor); - osync_free(anchorpath); + OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); + if (!osync_anchor_update(anchor, "lanchor", &error)) { + goto error; + } + //Save hashtable to database if (!osync_hashtable_save(sinkenv->hashtable, &error)) goto error; @@ -282,9 +282,8 @@ return; } -static void disconnect(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); //Close all stuff you need to close @@ -404,9 +403,9 @@ } /* Here we actually tell opensync which sinks are available. */ -static osync_bool discover(void *userdata, OSyncPluginInfo *info, OSyncError **error) +static osync_bool discover(OSyncPluginInfo *info, void *userdata, OSyncError **error) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, info, userdata, error); // plugin_environment *env = (plugin_environment *)userdata; Modified: branches/timeout/docs/examples/plugins/src/simple_plugin.c ============================================================================== --- branches/timeout/docs/examples/plugins/src/simple_plugin.c Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/docs/examples/plugins/src/simple_plugin.c Sat Jan 17 01:08:04 2009 (r5175) @@ -10,11 +10,11 @@ #include <string.h> typedef struct { - OSyncList *sink_envs; + OSyncList *sink_envs; } plugin_environment; typedef struct { - OSyncObjTypeSink *sink; + OSyncObjTypeSink *sink; } sink_environment; static void free_env(plugin_environment *env) @@ -31,16 +31,15 @@ osync_free(env); } -static void connect(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, userdata); //Each time you get passed a context (which is used to track //calls to your plugin) you can get the data your returned in //initialize via this call: // plugin_environment *env = (plugin_environment *)userdata; - //The sink specific userdata you can get with this calls: - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + //The sink specific userdata you can get with this call: sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); @@ -61,14 +60,19 @@ //you can also use the anchor system to detect a device reset //or some parameter change here. Check the docs to see how it works - char *lanchor = NULL; //Now you get the last stored anchor from the device - char *anchorpath = osync_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); + OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); + osync_bool anchormatch; - if (!osync_anchor_compare(anchorpath, "lanchor", lanchor)) + if (!osync_anchor_compare(anchor, "lanchor", &anchormatch, &error)) { + /* anchor couldn't be compared */ + goto error; + } + + if (!anchormatch) { + /* request slow sync */ osync_objtype_sink_set_slowsync(sink, TRUE); - - osync_free(anchorpath); + } osync_context_report_success(ctx); osync_trace(TRACE_EXIT, "%s", __func__); @@ -80,21 +84,16 @@ osync_error_unref(&error); } -static void get_changes(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); //plugin_environment *env = (plugin_environment *)userdata; OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; - /* Check for Slow-Sync */ - if (osync_objtype_sink_get_slowsync(sinkenv->sink)) { - } - /* * Now you can get the changes. * Loop over all changes you get and do the following: @@ -160,11 +159,10 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void commit_change(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void commit_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *userdata) { //plugin_environment *env = (plugin_environment *)userdata; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); /* @@ -192,22 +190,20 @@ osync_context_report_success(ctx); } -static void sync_done(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { /* * This function will only be called if the sync was successful */ OSyncError *error = NULL; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); //If we use anchors we have to update it now. //Now you get/calculate the current anchor of the device - char *lanchor = NULL; - char *anchorpath = osync_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); - osync_anchor_update(anchorpath, "lanchor", lanchor); - osync_free(anchorpath); - + OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); + if (!osync_anchor_update(anchor, "lanchor", &error)) + goto error; + //Answer the call osync_context_report_success(ctx); return; @@ -217,9 +213,8 @@ return; } -static void disconnect(void *userdata, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); sink_environment *sinkenv = osync_objtype_sink_get_userdata(sink); //Close all stuff you need to close @@ -331,7 +326,7 @@ } /* Here we actually tell opensync which sinks are available. */ -static osync_bool discover(void *userdata, OSyncPluginInfo *info, OSyncError **error) +static osync_bool discover(OSyncPluginInfo *info, void *userdata, OSyncError **error) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, error); Modified: branches/timeout/opensync/format/opensync_format_env.c ============================================================================== --- branches/timeout/opensync/format/opensync_format_env.c Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/opensync/format/opensync_format_env.c Sat Jan 17 01:08:04 2009 (r5175) @@ -976,9 +976,10 @@ /* If detected_format is NULL, there is no reason to run the detection * without any chance to report the result */ + osync_assert_msg(detected_format, "detected_format is NULL. Therefore it isn't possible to report a result of the detection."); osync_return_val_if_fail(detected_format, TRUE); - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, env, input, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, env, input, detected_format, error); if (!input || !osync_data_has_data(input)) { osync_trace(TRACE_EXIT, "%s: No data provided to detect.", __func__); Modified: branches/timeout/opensync/plugin/opensync_objtype_sink.c ============================================================================== --- branches/timeout/opensync/plugin/opensync_objtype_sink.c Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/opensync/plugin/opensync_objtype_sink.c Sat Jan 17 01:08:04 2009 (r5175) @@ -272,7 +272,7 @@ } else if (!functions.get_changes) { osync_context_report_success(ctx); } else { - functions.get_changes(plugindata, info, ctx); + functions.get_changes(sink, info, ctx, osync_objtype_sink_get_slowsync(sink), plugindata); } osync_trace(TRACE_EXIT, "%s", __func__); @@ -296,7 +296,7 @@ } else if (!functions.read) { osync_context_report_success(ctx); } else { - functions.read(plugindata, info, ctx, change); + functions.read(sink, info, ctx, change, plugindata); } osync_trace(TRACE_EXIT, "%s", __func__); @@ -313,7 +313,7 @@ if (!functions.connect) { osync_context_report_success(ctx); } else { - functions.connect(plugindata, info, ctx); + functions.connect(sink, info, ctx, plugindata); } osync_trace(TRACE_EXIT, "%s", __func__); @@ -330,7 +330,7 @@ if (!functions.disconnect) { osync_context_report_success(ctx); } else { - functions.disconnect(plugindata, info, ctx); + functions.disconnect(sink, info, ctx, plugindata); } osync_trace(TRACE_EXIT, "%s", __func__); @@ -347,7 +347,7 @@ if (!functions.sync_done) osync_context_report_success(ctx); else - functions.sync_done(plugindata, info, ctx); + functions.sync_done(sink, info, ctx, plugindata); osync_trace(TRACE_EXIT, "%s", __func__); } @@ -363,7 +363,7 @@ if (!functions.connect_done) osync_context_report_success(ctx); else - functions.connect_done(plugindata, info, ctx); + functions.connect_done(sink, info, ctx, plugindata); osync_trace(TRACE_EXIT, "%s", __func__); } @@ -398,7 +398,7 @@ } else if (!functions.commit) { osync_context_report_success(ctx); } else { - functions.commit(plugindata, info, ctx, change); + functions.commit(sink, info, ctx, change, plugindata); } } @@ -444,12 +444,12 @@ osync_list_free(sink->commit_changes); osync_list_free(sink->commit_contexts); - functions.batch_commit(plugindata, info, ctx, contexts, changes); + functions.batch_commit(sink, info, ctx, contexts, changes, plugindata); osync_free(changes); osync_free(contexts); } else if (functions.committed_all) { - functions.committed_all(plugindata, info, ctx); + functions.committed_all(sink, info, ctx, plugindata); } else { osync_context_report_success(ctx); } Modified: branches/timeout/opensync/plugin/opensync_objtype_sink.h ============================================================================== --- branches/timeout/opensync/plugin/opensync_objtype_sink.h Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/opensync/plugin/opensync_objtype_sink.h Sat Jan 17 01:08:04 2009 (r5175) @@ -29,16 +29,16 @@ */ /*@{*/ -typedef void (* OSyncSinkConnectFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef void (* OSyncSinkDisconnectFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef void (* OSyncSinkGetChangesFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef void (* OSyncSinkCommitFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change); -typedef osync_bool (* OSyncSinkWriteFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change); -typedef void (* OSyncSinkCommittedAllFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef osync_bool (* OSyncSinkReadFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change); -typedef void (* OSyncSinkBatchCommitFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncContext **, OSyncChange **changes); -typedef void (* OSyncSinkSyncDoneFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -typedef void (* OSyncSinkConnectDoneFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); +typedef void (* OSyncSinkConnectFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); +typedef void (* OSyncSinkDisconnectFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); +typedef void (* OSyncSinkGetChangesFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data); +typedef void (* OSyncSinkCommitFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data); +typedef osync_bool (* OSyncSinkWriteFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data); +typedef void (* OSyncSinkCommittedAllFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); +typedef osync_bool (* OSyncSinkReadFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data); +typedef void (* OSyncSinkBatchCommitFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncContext **, OSyncChange **changes, void *data); +typedef void (* OSyncSinkSyncDoneFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); +typedef void (* OSyncSinkConnectDoneFn) (OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data); typedef struct OSyncObjTypeSinkFunctions { OSyncSinkConnectFn connect; Modified: branches/timeout/tests/engine-tests/check_engine.c ============================================================================== --- branches/timeout/tests/engine-tests/check_engine.c Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/tests/engine-tests/check_engine.c Sat Jan 17 01:08:04 2009 (r5175) @@ -134,7 +134,7 @@ } END_TEST -static void connect1(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect1(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -153,7 +153,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -172,7 +172,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -364,7 +364,7 @@ } END_TEST -static void connect2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -383,7 +383,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -402,7 +402,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -421,7 +421,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_connect2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_connect2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -440,7 +440,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_disconnect2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_disconnect2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -459,7 +459,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_get_changes2(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_get_changes2(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -679,7 +679,7 @@ } END_TEST -static void connect3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -699,7 +699,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -721,7 +721,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -741,7 +741,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void sync_done3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void sync_done3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -763,7 +763,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_connect3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_connect3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -789,7 +789,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_disconnect3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_disconnect3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -817,7 +817,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_get_changes3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_get_changes3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -844,7 +844,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void main_sync_done3(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_sync_done3(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1080,7 +1080,7 @@ } END_TEST -static void main_disconnect4(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void main_disconnect4(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1359,7 +1359,7 @@ } END_TEST -static void connect5(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect5(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1371,7 +1371,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect5(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect5(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1383,7 +1383,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes5(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes5(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -1430,7 +1430,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void commit_change5(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void commit_change5(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { mock_env *env = data; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, data, info, ctx, change); @@ -1594,7 +1594,7 @@ } END_TEST -static void get_changes6(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes6(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; int i; @@ -1798,7 +1798,7 @@ } END_TEST -static void get_changes7(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes7(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { mock_env *env = data; int i; Modified: branches/timeout/tests/engine-tests/check_engine_error.c ============================================================================== --- branches/timeout/tests/engine-tests/check_engine_error.c Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/tests/engine-tests/check_engine_error.c Sat Jan 17 01:08:04 2009 (r5175) @@ -33,7 +33,7 @@ int num_disconnect = 0; int num_get_changes = 0; -static void connect1(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect1(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -44,7 +44,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void connect_error(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void connect_error(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -55,7 +55,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void disconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); @@ -66,7 +66,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void get_changes(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *data) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); Modified: branches/timeout/tests/mock-plugin/mock_sync.c ============================================================================== --- branches/timeout/tests/mock-plugin/mock_sync.c Fri Jan 16 19:30:06 2009 (r5174) +++ branches/timeout/tests/mock-plugin/mock_sync.c Sat Jan 17 01:08:04 2009 (r5175) @@ -25,24 +25,24 @@ static osync_bool mock_get_error(long long int memberid, const char *domain) { - const char *env = g_getenv(domain); + const char *env = g_getenv(domain); - if (!env) - return FALSE; + if (!env) + return FALSE; - int num = atoi(env); - int mask = 1 << (memberid - 1); - if (num & mask) { - char *chancestr = g_strdup_printf("%s_PROB", domain); - const char *chance = g_getenv(chancestr); - g_free(chancestr); - if (!chance) - return TRUE; - int prob = atoi(chance); - if (prob >= g_random_int_range(0, 100)) - return TRUE; - } - return FALSE; + int num = atoi(env); + int mask = 1 << (memberid - 1); + if (num & mask) { + char *chancestr = g_strdup_printf("%s_PROB", domain); + const char *chance = g_getenv(chancestr); + g_free(chancestr); + if (!chance) + return TRUE; + int prob = atoi(chance); + if (prob >= g_random_int_range(0, 100)) + return TRUE; + } + return FALSE; } static char *mock_generate_hash(struct stat *buf) @@ -50,14 +50,13 @@ return g_strdup_printf("%i-%i", (int)buf->st_mtime, (int)buf->st_ctime); } -static void mock_connect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { osync_bool anchor_compare_match; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); OSyncAnchor *anchor = osync_objtype_sink_get_anchor(sink); MockDir *dir = osync_objtype_sink_get_userdata(sink); - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); if (mock_get_error(info->memberid, "CONNECT_ERROR")) { osync_context_report_error(ctx, OSYNC_ERROR_EXPECTED, "Triggering CONNECT_ERROR error"); @@ -102,10 +101,9 @@ return; } -static void mock_connect_done(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_connect_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); if (mock_get_error(info->memberid, "CONNECT_DONE_ERROR")) { @@ -130,11 +128,10 @@ } -static void mock_disconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, ctx, data); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); MockDir *dir = osync_objtype_sink_get_userdata(sink); mock_env *env = data; @@ -172,10 +169,9 @@ //typedef void (* OSyncSinkCommittedAllFn) (void *data, OSyncPluginInfo *info, OSyncContext *ctx); -static osync_bool mock_read(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static osync_bool mock_read(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, data, info, ctx, change); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; @@ -211,10 +207,9 @@ return TRUE; } -static osync_bool mock_write(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static osync_bool mock_write(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, data, info, ctx, change); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); OSyncError *error = NULL; OSyncData *odata = NULL; @@ -366,10 +361,9 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_get_changes(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +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)", __func__, data, info, ctx); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + 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); OSyncError *error = NULL; @@ -430,10 +424,9 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_commit_change(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void mock_commit_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *data) { - osync_trace(TRACE_ENTRY, "%s", __func__); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, sink, info, ctx, change, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); char *filename = NULL; @@ -449,7 +442,7 @@ return; } - if (!mock_write(data, info, ctx, change)) { + if (!mock_write(sink, info, ctx, change, data)) { osync_trace(TRACE_EXIT_ERROR, "%s", __func__); return; } @@ -474,18 +467,17 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_batch_commit(void *data, OSyncPluginInfo *info, OSyncContext *context, OSyncContext **contexts, OSyncChange **changes) +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)", __func__, context, contexts, changes); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + 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); - osync_assert(dir->committed_all == FALSE); - dir->committed_all = TRUE; + osync_assert(dir->committed_all == FALSE); + dir->committed_all = TRUE; - int i; - for (i = 0; contexts[i]; i++) { - if (mock_write(data, info, contexts[i], changes[i])) { + int i; + for (i = 0; contexts[i]; i++) { + if (mock_write(sink, info, contexts[i], changes[i], data)) { char *filename = g_strdup_printf ("%s/%s", dir->path, osync_change_get_uid(changes[i])); char *hash = NULL; @@ -498,49 +490,47 @@ g_free(filename); osync_hashtable_update_change(dir->hashtable, changes[i]); - osync_context_report_success(contexts[i]); - } - } + osync_context_report_success(contexts[i]); + } + } - if (g_getenv("NUM_BATCH_COMMITS")) { - int req = atoi(g_getenv("NUM_BATCH_COMMITS")); - osync_assert(req == i); - } - - if (mock_get_error(info->memberid, "COMMITTED_ALL_ERROR")) { - osync_context_report_error(context, OSYNC_ERROR_EXPECTED, "Triggering COMMITTED_ALL_ERROR error"); - return; - } + if (g_getenv("NUM_BATCH_COMMITS")) { + int req = atoi(g_getenv("NUM_BATCH_COMMITS")); + osync_assert(req == i); + } + + if (mock_get_error(info->memberid, "COMMITTED_ALL_ERROR")) { + osync_context_report_error(context, OSYNC_ERROR_EXPECTED, "Triggering COMMITTED_ALL_ERROR error"); + return; + } - osync_context_report_success(context); + osync_context_report_success(context); - osync_trace(TRACE_EXIT, "%s", __func__); + osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_committed_all(void *data, OSyncPluginInfo *info, OSyncContext *context) +static void mock_committed_all(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *context, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p)", __func__, context); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, sink, info, context, data); MockDir *dir = osync_objtype_sink_get_userdata(sink); - osync_assert(dir->committed_all == FALSE); - dir->committed_all = TRUE; + osync_assert(dir->committed_all == FALSE); + dir->committed_all = TRUE; - if (mock_get_error(info->memberid, "COMMITTED_ALL_ERROR")) { - osync_context_report_error(context, OSYNC_ERROR_EXPECTED, "Triggering COMMITTED_ALL_ERROR error"); - osync_trace(TRACE_EXIT_ERROR, "%s: Reporting error", __func__); - return; - } + if (mock_get_error(info->memberid, "COMMITTED_ALL_ERROR")) { + osync_context_report_error(context, OSYNC_ERROR_EXPECTED, "Triggering COMMITTED_ALL_ERROR error"); + osync_trace(TRACE_EXIT_ERROR, "%s: Reporting error", __func__); + return; + } - osync_context_report_success(context); + osync_context_report_success(context); - osync_trace(TRACE_EXIT, "%s", __func__); + osync_trace(TRACE_EXIT, "%s", __func__); } -static void mock_sync_done(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void mock_sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *data) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); + 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); @@ -563,7 +553,7 @@ * all _possible_ objtype sinks. */ static void *mock_initialize(OSyncPlugin *plugin, OSyncPluginInfo *info, OSyncError **error) { - osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, plugin, info, error); if (mock_get_error(info->memberid, "INIT_NULL_NOERROR")) { osync_trace(TRACE_EXIT, "%s: %s", __func__, "Everything is fine. I don't need plugin userdata."); |