From: <svn...@op...> - 2009-09-03 14:38:52
|
Author: dgollub Date: Thu Sep 3 16:38:37 2009 New Revision: 5734 URL: http://www.opensync.org/changeset/5734 Log: Quick and dirty port to latest API changes Modified: plugins/irmc-sync/src/irmc_sync.c plugins/irmc-sync/src/irmc_sync.h Modified: plugins/irmc-sync/src/irmc_sync.c ============================================================================== --- plugins/irmc-sync/src/irmc_sync.c Thu Sep 3 15:21:52 2009 (r5733) +++ plugins/irmc-sync/src/irmc_sync.c Thu Sep 3 16:38:37 2009 (r5734) @@ -239,7 +239,8 @@ osync_trace(TRACE_ENTRY, "%s(%p)", __func__, env); irmc_config *config = &(env->config); - +/* FIXME port to SinkStateDb */ +#if 0 char *anchor = osync_anchor_retrieve(env->anchor_path, "general"); if (!anchor) { config->serial_number = NULL; @@ -251,6 +252,7 @@ config->serial_number = g_strdup( data ); } g_free( anchor ); +#endif osync_trace(TRACE_EXIT, "%s", __func__); } @@ -263,20 +265,24 @@ const irmc_config *config = &(env->config); + +/* FIXME port to SinkStateDb */ +#if 0 osync_anchor_update( env->anchor_path, "general", config->serial_number ); +#endif osync_trace(TRACE_EXIT, "%s", __func__); } /** * Creates the calendar specific changeinfo for slow- and fastsync */ -void create_calendar_changeinfo(int sync_type, OSyncObjTypeSink *sink, OSyncContext *ctx, char *data, char *luid, int type) +void create_calendar_changeinfo(int sync_type, OSyncObjTypeSink *sink, OSyncContext *ctx, char *data, char *luid, int type, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%i, %p, %p, %s, %i)", __func__, sync_type, ctx, data, luid, type); osync_trace(TRACE_SENSITIVE, "Content of data:\n%s", data); OSyncError *error = NULL; - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *) userdata; if (sync_type == SLOW_SYNC) { char *event_start = data, *todo_start; @@ -376,12 +382,12 @@ /** * Creates the addressbook specific changeinfo for slow- and fastsync */ -void create_addressbook_changeinfo(int sync_type, OSyncObjTypeSink *sink, OSyncContext *ctx, char *data, char *luid, int type) +void create_addressbook_changeinfo(int sync_type, OSyncObjTypeSink *sink, OSyncContext *ctx, char *data, char *luid, int type, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%i, %p, %p, %s, %i)", __func__, sync_type, ctx, data, luid, type); osync_trace(TRACE_SENSITIVE, "Content of data:\n%s", data); - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *) userdata; OSyncError *error = NULL; int vcard_size = 0; @@ -457,12 +463,12 @@ /** * Creates the notebook specific changeinfo for slow- and fastsync */ -void create_notebook_changeinfo(int sync_type, OSyncObjTypeSink *sink, OSyncContext *ctx, char *data, char *luid, int type) +void create_notebook_changeinfo(int sync_type, OSyncObjTypeSink *sink, OSyncContext *ctx, char *data, char *luid, int type, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%i, %p, %p, %s, %i)", __func__, sync_type, ctx, data, luid, type); osync_trace(TRACE_SENSITIVE, "Content of data:\n%s", data); - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *) userdata; OSyncError *error = NULL; @@ -546,12 +552,10 @@ * - create_addressbook_changeinfo() * - create_notebook_changeinfo() */ -gboolean get_generic_changeinfo(irmc_environment *env, OSyncPluginInfo *oinfo, OSyncContext *ctx, data_type_information *info, OSyncError **error) +gboolean get_generic_changeinfo(irmc_environment *env, OSyncObjTypeSink *sink, OSyncPluginInfo *oinfo, OSyncContext *ctx, data_type_information *info, void *userdata, OSyncError **error) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __func__, env, info, ctx, info, error); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(oinfo); - char *buffer; char *buffer_pos; int buffer_length; @@ -637,11 +641,11 @@ // handle object specific part if ( strcmp( info->identifier, "event" ) == 0 ) - create_calendar_changeinfo( SLOW_SYNC, sink, ctx, buffer, 0, 0 ); + create_calendar_changeinfo( SLOW_SYNC, sink, ctx, buffer, 0, 0, userdata); else if ( strcmp( info->identifier, "contact" ) == 0 ) - create_addressbook_changeinfo( SLOW_SYNC, sink, ctx, buffer, 0, 0 ); + create_addressbook_changeinfo( SLOW_SYNC, sink, ctx, buffer, 0, 0, userdata ); else if ( strcmp( info->identifier, "note" ) == 0 ) - create_notebook_changeinfo( SLOW_SYNC, sink, ctx, buffer, 0, 0 ); + create_notebook_changeinfo( SLOW_SYNC, sink, ctx, buffer, 0, 0, userdata ); } else { osync_trace(TRACE_INTERNAL, "fastsync %s\n", info->name ); @@ -724,11 +728,11 @@ // handle object specific part if ( strcmp( info->identifier, "event" ) == 0 ) - create_calendar_changeinfo(FAST_SYNC, sink, ctx, data, luid, type); + create_calendar_changeinfo(FAST_SYNC, sink, ctx, data, luid, type, userdata); else if ( strcmp( info->identifier, "contact" ) == 0 ) - create_addressbook_changeinfo(FAST_SYNC, sink, ctx, data, luid, type); + create_addressbook_changeinfo(FAST_SYNC, sink, ctx, data, luid, type, userdata); else if ( strcmp( info->identifier, "note" ) == 0 ) - create_notebook_changeinfo(FAST_SYNC, sink, ctx, data, luid, type); + create_notebook_changeinfo(FAST_SYNC, sink, ctx, data, luid, type, userdata); } buffer_pos = strstr(buffer_pos, "\r\n"); @@ -855,17 +859,20 @@ } /* Establish connection to the device */ -static void irmcConnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void irmcConnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%p)", __func__, ctx); - irmc_environment *env = (irmc_environment *)data; + irmc_database *database = (irmc_database *)userdata; + irmc_environment *env = database->env; irmc_config *config = &(env->config); - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); - irmc_database *database = osync_objtype_sink_get_userdata(sink); + const char *objtype = osync_objtype_sink_get_name(sink); + +/* FIXME port to SinkStateDb */ +#if 0 char *anchor = osync_anchor_retrieve(env->anchor_path, objtype); if (!anchor) { database->changecounter = 0; @@ -878,6 +885,7 @@ database->dbid = g_strdup( data ); } g_free( anchor ); +#endif OSyncError *error = NULL; if (env->isConnected == 0) { @@ -921,11 +929,11 @@ /** * This method is called to disconnect from the device. */ -static void irmcDisconnect(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void irmcDisconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, userdata, info, ctx); - irmc_environment *env = (irmc_environment *)data; + irmc_environment *env = (irmc_environment *)userdata; // disconnect from the device if (env->isConnected <= 1) { @@ -944,21 +952,23 @@ /** * This method is called when the sync was successfull. */ -static void irmcSyncDone(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void irmcSyncDone(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, void *userdata) { - 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)", __func__, userdata, info, ctx); - irmc_environment *env = (irmc_environment *)data; - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *)userdata; + irmc_environment *env = database->env; const char *objtype = osync_objtype_sink_get_name(sink); if (database->changecounter >= 0 && strcmp(database->dbid, "FFFFFF")) { + +/* FIXME port to SinkStateDb */ +#if 0 char *anchor = g_strdup_printf("%d:%s", database->changecounter, database->dbid); osync_anchor_update( env->anchor_path, objtype, anchor ); g_free(anchor); +#endif } else { osync_trace(TRACE_INTERNAL, "ERROR: Invalid values for event anchor detected."); } @@ -972,14 +982,13 @@ * * This method calls get_generic_changeinfo() for objtype event */ -static void irmcCalendarGetChangeinfo(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void irmcCalendarGetChangeinfo(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *userdata) { - osync_trace(TRACE_ENTRY, "%p, %p, %p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%p, %p, %p)", __func__, userdata, info, ctx); OSyncError *error = 0; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); - irmc_environment *env = (irmc_environment *)data; - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *)userdata; + irmc_environment *env = database->env; data_type_information datainfo; @@ -991,7 +1000,7 @@ datainfo.change_counter = &(database->changecounter); - if (!get_generic_changeinfo(env, info, ctx, &datainfo, &error)) + if (!get_generic_changeinfo(env, sink, info, ctx, &datainfo, userdata, &error)) goto error; osync_context_report_success(ctx); @@ -1008,14 +1017,13 @@ * * This method calls get_generic_changeinfo() for objtype contact */ -static void irmcContactGetChangeinfo(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void irmcContactGetChangeinfo(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p,%p,%p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%s(%p,%p,%p)", __func__, userdata, info, ctx); OSyncError *error = 0; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); - irmc_environment *env = (irmc_environment *)data; - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *)userdata; + irmc_environment *env = database->env; data_type_information datainfo; @@ -1026,7 +1034,7 @@ strcpy(datainfo.path_extension, "vcf"); datainfo.change_counter = &(database->changecounter); - if (!get_generic_changeinfo(env, info, ctx, &datainfo, &error)) + if (!get_generic_changeinfo(env, sink, info, ctx, &datainfo, userdata, &error)) goto error; osync_context_report_success(ctx); @@ -1043,14 +1051,14 @@ * * This method calls get_generic_changeinfo() for objtype note */ -static void irmcNoteGetChangeinfo(void *data, OSyncPluginInfo *info, OSyncContext *ctx) +static void irmcNoteGetChangeinfo(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync, void *userdata) { - osync_trace(TRACE_ENTRY, "%p, %p, %p)", __func__, data, info, ctx); + osync_trace(TRACE_ENTRY, "%p, %p, %p)", __func__, userdata, info, ctx); OSyncError *error = 0; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); - irmc_environment *env = (irmc_environment *)data; - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *)userdata; + irmc_environment *env = database->env; + data_type_information datainfo; @@ -1061,7 +1069,7 @@ strcpy(datainfo.path_extension, "vnt"); datainfo.change_counter = &(database->changecounter); - if (!get_generic_changeinfo(env, info, ctx, &datainfo, &error)) + if (!get_generic_changeinfo(env, sink, info, ctx, &datainfo, userdata, &error)) goto error; osync_context_report_success(ctx); @@ -1211,14 +1219,15 @@ /** * Commits the calendar specific changeinfo to the device. */ -static void irmcCalendarCommitChange(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void irmcCalendarCommitChange(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, data, info, ctx, change); + osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, userdata, info, ctx, change); data_type_information datainfo; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); - irmc_environment *env = (irmc_environment *)data; - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *)userdata; + irmc_environment *env = database->env; + + memset(&datainfo, 0, sizeof(datainfo)); strcpy(datainfo.name, "calendar"); @@ -1234,14 +1243,13 @@ /** * Commits the addressbook specific changeinfo to the device. */ -static void irmcContactCommitChange(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void irmcContactCommitChange(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *userdata) { osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, ctx, change); data_type_information datainfo; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); - irmc_environment *env = (irmc_environment *)data; - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *)userdata; + irmc_environment *env = database->env; memset(&datainfo, 0, sizeof(datainfo)); strcpy(datainfo.name, "addressbook"); @@ -1257,14 +1265,14 @@ /** * Commits the notebook specific changeinfo to the device. */ -static void irmcNoteCommitChange(void *data, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change) +static void irmcNoteCommitChange(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *change, void *userdata) { - osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, data, info, ctx, change); + osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, userdata, info, ctx, change); data_type_information datainfo; - OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); - irmc_environment *env = (irmc_environment *)data; - irmc_database *database = osync_objtype_sink_get_userdata(sink); + irmc_database *database = (irmc_database *)userdata; + irmc_environment *env = database->env; + memset(&datainfo, 0, sizeof(datainfo)); strcpy(datainfo.name, "notebook"); @@ -1307,7 +1315,7 @@ /** * Discover the capabilities of the IrMC mobile. */ -static osync_bool irmcDiscover(void *data, OSyncPluginInfo *info, OSyncError **error) +static osync_bool irmcDiscover(OSyncPluginInfo *info, void *data, OSyncError **error) { osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, error); @@ -1332,29 +1340,27 @@ return TRUE; } -static irmc_database *create_database(OSyncPluginInfo *info, const char *objtype, const char *format, char *obex_db, OSyncSinkGetChangesFn getchanges, OSyncSinkCommitFn commit, OSyncError **error) +static irmc_database *create_database(OSyncPluginInfo *info, OSyncObjTypeSink *sink, const char *format, char *obex_db, OSyncSinkGetChangesFn getchanges, OSyncSinkCommitFn commit, OSyncError **error) { - osync_trace(TRACE_ENTRY, "%s(%p, %s, %s, %p)", __func__, info, objtype, format, error); + osync_trace(TRACE_ENTRY, "%s(%p, %s, %s, %p)", __func__, info, sink, format, error); OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); + const char *objtype = osync_objtype_sink_get_name(sink); irmc_database *database = osync_try_malloc0(sizeof(irmc_database), error); if (!database) goto error; - database->sink = osync_objtype_sink_new(objtype, error); + database->sink = sink; if (!database->sink) goto error_free_db; - OSyncObjTypeSinkFunctions functions; - memset(&functions, 0, sizeof(functions)); - functions.connect = irmcConnect; - functions.disconnect = irmcDisconnect; - functions.sync_done = irmcSyncDone; - functions.get_changes = getchanges; - functions.commit = commit; + osync_objtype_sink_set_connect_func(database->sink, irmcConnect); + osync_objtype_sink_set_disconnect_func(database->sink, irmcDisconnect); + osync_objtype_sink_set_get_changes_func(database->sink, getchanges); + osync_objtype_sink_set_commit_func(database->sink, commit); + osync_objtype_sink_set_sync_done_func(database->sink, irmcSyncDone); - osync_objtype_sink_set_functions(database->sink, functions, database); database->objformat = osync_format_env_find_objformat(formatenv, format); if (!database->objformat) { @@ -1393,7 +1399,10 @@ env->isConnected = 0; // retrieve the config data + /* FIXME: PORT to OSyncPluginConfig */ +#if 0 configdata = osync_plugin_info_get_config(info); +#endif if (!configdata) { osync_error_set(error, OSYNC_ERROR_IO_ERROR, "Unable to get config data."); goto error_free_env; @@ -1405,17 +1414,43 @@ goto error_free_env; } + /* drop obsolate ... */ +#if 0 // set default irmc anchor path env->anchor_path = g_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); - irmc_database *contactdb = create_database(info, "contact", "vcard21", "pb", irmcContactGetChangeinfo, irmcContactCommitChange, error); - irmc_database *eventdb = create_database(info, "event", "vevent10", "cal", irmcCalendarGetChangeinfo, irmcCalendarCommitChange, error); - irmc_database *tododb = create_database(info, "todo", "vtodo10", "cal", irmcCalendarGetChangeinfo, irmcCalendarCommitChange, error); - irmc_database *notedb = create_database(info, "note", "vnote11", "nt", irmcNoteGetChangeinfo, irmcNoteCommitChange, error); +#endif + + irmc_database *contactdb; + irmc_database *eventdb; + irmc_database *tododb; + irmc_database *notedb; + + OSyncList *s, *sinks = osync_plugin_info_get_objtype_sinks(info); + for (s = sinks; s; s = s->next) { + + OSyncObjTypeSink *sink = (OSyncObjTypeSink *) s->data; + + const char *objtype = osync_objtype_sink_get_name(sink); + + if (!strcmp(objtype, "contact")) + contactdb = create_database(info, sink, "vcard21", "pb", irmcContactGetChangeinfo, irmcContactCommitChange, error); + else if (!strcmp(objtype, "event")) + eventdb = create_database(info, sink, "vevent10", "cal", irmcCalendarGetChangeinfo, irmcCalendarCommitChange, error); + else if (!strcmp(objtype, "todo")) + tododb = create_database(info, sink, "vtodo10", "cal", irmcCalendarGetChangeinfo, irmcCalendarCommitChange, error); + else if (!strcmp(objtype, "note")) + notedb = create_database(info, sink, "vnote11", "nt", irmcNoteGetChangeinfo, irmcNoteCommitChange, error); + } if (!contactdb || !eventdb || !tododb || !notedb) goto error_free_env; + contactdb->env = env; + eventdb->env = env; + tododb->env = env; + notedb->env = env; + env->databases = g_list_append(env->databases, contactdb); env->databases = g_list_append(env->databases, eventdb); env->databases = g_list_append(env->databases, tododb); Modified: plugins/irmc-sync/src/irmc_sync.h ============================================================================== --- plugins/irmc-sync/src/irmc_sync.h Thu Sep 3 15:21:52 2009 (r5733) +++ plugins/irmc-sync/src/irmc_sync.h Thu Sep 3 16:38:37 2009 (r5734) @@ -70,6 +70,7 @@ unsigned int changecounter; char *dbid; char *obex_db; + irmc_environment *env; // Ugly hack - drop when config got ported to OSyncPluginConfig } irmc_database; obex_t* irmc_obex_client(irmc_config *config); |