« Return to Thread: Updating kdepim plugin

[PATCH 5/6] A number of related 0.4x API changes

by Chris Frey-2 :: Rate this Message:

Reply to Author | View in Thread


- hashtable API change
- added OSyncObjTypeSink *sink to C++ wrapper class member args
- added osync_bool slow_sync to args as well
---
 src/datasource.cpp |   46 +++++++++++++------------------------------
 src/datasource.h   |   17 +++++++--------
 src/kaddrbook.cpp  |   20 +++++++++---------
 src/kaddrbook.h    |    8 +++---
 src/kcal.cpp       |   54 ++++++++++++++++++++++++++-------------------------
 src/kcal.h         |   22 ++++++++++----------
 src/knotes.cpp     |   19 +++++++++--------
 src/knotes.h       |    8 +++---
 8 files changed, 89 insertions(+), 105 deletions(-)

diff --git a/src/datasource.cpp b/src/datasource.cpp
index 238fdda..1ebdbc9 100644
--- a/src/datasource.cpp
+++ b/src/datasource.cpp
@@ -1,6 +1,7 @@
 /**
  * @author Andrew Baumann <andrewb@...>
  * changed to 0.40 API by Martin Koller <kollix@...>
+ * some additional 0.40 API updates by Chris Frey <cdfrey@...>
  */
 
 #include <stdlib.h>
@@ -16,7 +17,7 @@ static void connect_wrapper(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSync
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __PRETTY_FUNCTION__, sink, userdata, info, ctx);
   OSyncDataSource *obj = static_cast<OSyncDataSource *>(userdata);
-  obj->connect(info, ctx);
+  obj->connect(sink, info, ctx);
   osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__);
 }
 
@@ -26,7 +27,7 @@ static void disconnect_wrapper(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OS
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __PRETTY_FUNCTION__, sink, userdata, info, ctx);
   OSyncDataSource *obj = static_cast<OSyncDataSource *>(userdata);
-  obj->disconnect(info, ctx);
+  obj->disconnect(sink, info, ctx);
   osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__);
 }
 
@@ -37,7 +38,7 @@ static void get_changes_wrapper(OSyncObjTypeSink *sink, OSyncPluginInfo *info,
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __PRETTY_FUNCTION__, sink, userdata, info, ctx);
   OSyncDataSource *obj = static_cast<OSyncDataSource *>(userdata);
-  obj->get_changes(info, ctx);
+  obj->get_changes(sink, info, ctx, slow_sync);
   osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__);
 }
 
@@ -48,7 +49,7 @@ static void commit_wrapper(OSyncObjTypeSink *sink, OSyncPluginInfo *info,
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p, %p)", __PRETTY_FUNCTION__, sink, userdata, info, ctx, chg);
   OSyncDataSource *obj = static_cast<OSyncDataSource *>(userdata);
-  obj->commit(info, ctx, chg);
+  obj->commit(sink, info, ctx, chg);
   osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__);
 }
 
@@ -58,7 +59,7 @@ static void sync_done_wrapper(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSy
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __PRETTY_FUNCTION__, sink, userdata, info, ctx);
   OSyncDataSource *obj = static_cast<OSyncDataSource *>(userdata);
-  obj->sync_done(info, ctx);
+  obj->sync_done(sink, info, ctx);
   osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__);
 }
 
@@ -91,18 +92,8 @@ bool OSyncDataSource::initialize(OSyncPlugin *plugin, OSyncPluginInfo *info, OSy
   // Request a state_db from the framework.
   osync_objtype_sink_enable_state_db(sink, TRUE);
 
-  const char *configdir = osync_plugin_info_get_configdir(info);
-  QString tablepath = QString("%1/hashtable.db").arg(configdir);
-  hashtable = osync_hashtable_new(QFile::encodeName(tablepath), objtype, error);
-  if ( !hashtable ) {
-    osync_trace(TRACE_EXIT_ERROR, "%s: %s", __PRETTY_FUNCTION__, osync_error_print(error));
-    return false;
-  }
-  if ( !osync_hashtable_load(hashtable, error) )
-  {
-    osync_trace(TRACE_EXIT_ERROR, "%s: %s", __PRETTY_FUNCTION__, osync_error_print(error));
-    return false;
-  }
+  // Request a hashtable from the framework
+  osync_objtype_sink_enable_hashtable(sink, TRUE);
 
   // NOTE: advanced options are per plugin; currently we read the FilterCategory
   // for each Resource (later this could be separated by Resource via a different name, etc.)
@@ -126,7 +117,7 @@ bool OSyncDataSource::initialize(OSyncPlugin *plugin, OSyncPluginInfo *info, OSy
 
 //--------------------------------------------------------------------------------
 
-void OSyncDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
+void OSyncDataSource::connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx);
 
@@ -134,7 +125,6 @@ void OSyncDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
   OSyncError *error = NULL;
   osync_bool statematch = FALSE;
 
-  OSyncObjTypeSink *sink = osync_plugin_info_find_objtype(info, objtype);
   OSyncSinkStateDB *state_db = osync_objtype_sink_get_state_db(sink);
 
   if ( !osync_sink_state_equal(state_db, "done", "true", &statematch, &error) )
@@ -157,14 +147,13 @@ void OSyncDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
 
 //--------------------------------------------------------------------------------
 
-void OSyncDataSource::sync_done(OSyncPluginInfo *info, OSyncContext *ctx)
+void OSyncDataSource::sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx);
 
   // Detection mechanismn if this is the first sync
   OSyncError *error = NULL;
 
-  OSyncObjTypeSink *sink = osync_plugin_info_find_objtype(info, objtype);
   OSyncSinkStateDB *state_db = osync_objtype_sink_get_state_db(sink);
 
   if ( !osync_sink_state_set(state_db, "done", "true", &error) )
@@ -176,19 +165,12 @@ void OSyncDataSource::sync_done(OSyncPluginInfo *info, OSyncContext *ctx)
   }
   osync_context_report_success(ctx);
 
-  if ( hashtable && !osync_hashtable_save(hashtable, &error) )
-  {
-    osync_context_report_osyncerror(ctx, error);
-    osync_trace(TRACE_EXIT_ERROR, "%s: %s", __PRETTY_FUNCTION__, osync_error_print(&error));
-    osync_error_unref(&error);
-  }
-
   osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__);
 }
 
 //--------------------------------------------------------------------------------
 
-bool OSyncDataSource::report_change(OSyncPluginInfo *info, OSyncContext *ctx,
+bool OSyncDataSource::report_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx,
                                     QString uid, QString data, QString hash, OSyncObjFormat *objformat)
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p, %s, (data), (hash), %p)", __PRETTY_FUNCTION__,
@@ -209,6 +191,7 @@ bool OSyncDataSource::report_change(OSyncPluginInfo *info, OSyncContext *ctx,
   osync_change_set_uid(change, uid.utf8());
   osync_change_set_hash(change, hash.utf8());
 
+  OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
   OSyncChangeType changetype = osync_hashtable_get_changetype(hashtable, change);
   osync_change_set_changetype(change, changetype);
 
@@ -246,11 +229,12 @@ bool OSyncDataSource::report_change(OSyncPluginInfo *info, OSyncContext *ctx,
 
 //--------------------------------------------------------------------------------
 
-bool OSyncDataSource::report_deleted(OSyncPluginInfo *info, OSyncContext *ctx, OSyncObjFormat *objformat)
+bool OSyncDataSource::report_deleted(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncObjFormat *objformat)
 {
   osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __PRETTY_FUNCTION__, info, ctx, objformat);
 
   OSyncError *error = NULL;
+  OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
   OSyncList *u, *uids  = osync_hashtable_get_deleted(hashtable);
   OSyncChange *change = NULL;
 
@@ -296,8 +280,6 @@ error:
 
 OSyncDataSource::~OSyncDataSource()
 {
-  if (hashtable)
-    osync_hashtable_unref(hashtable);
 }
 
 //--------------------------------------------------------------------------------
diff --git a/src/datasource.h b/src/datasource.h
index cf30507..b7c4c8c 100644
--- a/src/datasource.h
+++ b/src/datasource.h
@@ -15,7 +15,7 @@ class OSyncDataSource
  friend class KCalSharedResource;
 
  public:
- OSyncDataSource(const char *objtype) : objtype(objtype), hashtable(0) {}
+ OSyncDataSource(const char *objtype) : objtype(objtype) {}
  virtual ~OSyncDataSource();
 
                 const char *getObjType() const { return objtype; }
@@ -24,11 +24,11 @@ class OSyncDataSource
  virtual bool initialize(OSyncPlugin *plugin, OSyncPluginInfo *info, OSyncError **error);
 
  /* these map to opensync's per-sink callbacks */
- virtual void connect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void disconnect(OSyncPluginInfo *info, OSyncContext *ctx) = 0;
- virtual void get_changes(OSyncPluginInfo *info, OSyncContext *ctx) = 0;
- virtual void commit(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg) = 0;
- virtual void sync_done(OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx) = 0;
+ virtual void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync) = 0;
+ virtual void commit(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg) = 0;
+ virtual void sync_done(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
 
  // return true if at least one item in the given list is included in the categories member
  bool has_category(const QStringList &list) const;
@@ -37,12 +37,11 @@ class OSyncDataSource
 
  protected:
  const char *objtype;
- OSyncHashTable *hashtable;
  QStringList categories;
 
  /* utility functions for subclasses */
- bool report_change(OSyncPluginInfo *info, OSyncContext *ctx, QString uid, QString data, QString hash, OSyncObjFormat *objformat);
- bool report_deleted(OSyncPluginInfo *info, OSyncContext *ctx, OSyncObjFormat *objformat);
+ bool report_change(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, QString uid, QString data, QString hash, OSyncObjFormat *objformat);
+ bool report_deleted(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncObjFormat *objformat);
 };
 
 #endif // KDEPIM_OSYNC_DATASOURCE_H
diff --git a/src/kaddrbook.cpp b/src/kaddrbook.cpp
index b4ec1ec..da38536 100644
--- a/src/kaddrbook.cpp
+++ b/src/kaddrbook.cpp
@@ -54,7 +54,7 @@ QString KContactDataSource::calc_hash(KABC::Addressee &e)
 
 //--------------------------------------------------------------------------------
 
-void KContactDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
+void KContactDataSource::connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
  osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx);
 
@@ -70,14 +70,14 @@ void KContactDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
  return;
  }
 
- OSyncDataSource::connect(info, ctx);
+ OSyncDataSource::connect(sink, info, ctx);
 
  osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__);
 }
 
 //--------------------------------------------------------------------------------
 
-void KContactDataSource::disconnect(OSyncPluginInfo *info, OSyncContext *ctx)
+void KContactDataSource::disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
  osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx);
 
@@ -101,15 +101,14 @@ void KContactDataSource::disconnect(OSyncPluginInfo *info, OSyncContext *ctx)
 
 //--------------------------------------------------------------------------------
 
-void KContactDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
+void KContactDataSource::get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync)
 {
  osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx);
 
  OSyncError *error = NULL;
+ OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
 
- OSyncObjTypeSink *sink = osync_plugin_info_find_objtype(info, objtype);
-
- if (osync_objtype_sink_get_slowsync(sink)) {
+ if (slow_sync) {
  osync_trace(TRACE_INTERNAL, "Got slow-sync, resetting hashtable");
  if (!osync_hashtable_slowsync(hashtable, &error)) {
  osync_context_report_osyncerror(ctx, error);
@@ -132,7 +131,7 @@ void KContactDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
  // only vcard3.0 exports Categories
  QString data = converter.createVCard(*it, KABC::VCardConverter::v3_0);
 
- if (!report_change(info, ctx, it->uid(), data, calc_hash(*it), objformat)) {
+ if (!report_change(sink, info, ctx, it->uid(), data, calc_hash(*it), objformat)) {
 
  osync_context_report_error(ctx, OSYNC_ERROR_GENERIC, "Failed to get changes");
  osync_trace(TRACE_EXIT_ERROR, "%s", __PRETTY_FUNCTION__);
@@ -140,7 +139,7 @@ void KContactDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
  }
  }
 
- if (!report_deleted(info, ctx, objformat)) {
+ if (!report_deleted(sink, info, ctx, objformat)) {
  osync_context_report_error(ctx, OSYNC_ERROR_GENERIC, "Failed detecting deleted changes.");
  osync_trace(TRACE_EXIT_ERROR, "%s", __PRETTY_FUNCTION__);
  return;
@@ -152,7 +151,7 @@ void KContactDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
 
 //--------------------------------------------------------------------------------
 
-void KContactDataSource::commit(OSyncPluginInfo *, OSyncContext *ctx, OSyncChange *chg)
+void KContactDataSource::commit(OSyncObjTypeSink *sink, OSyncPluginInfo *, OSyncContext *ctx, OSyncChange *chg)
 {
  osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, ctx, chg);
  KABC::VCardConverter converter;
@@ -224,6 +223,7 @@ void KContactDataSource::commit(OSyncPluginInfo *, OSyncContext *ctx, OSyncChang
  }
  }
 
+ OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
  osync_hashtable_update_change(hashtable, chg);
 
  osync_context_report_success(ctx);
diff --git a/src/kaddrbook.h b/src/kaddrbook.h
index a51c7cb..689a0d7 100644
--- a/src/kaddrbook.h
+++ b/src/kaddrbook.h
@@ -33,10 +33,10 @@ class KContactDataSource : public OSyncDataSource
  KContactDataSource() : OSyncDataSource("contact"), addressbookptr(0), modified(false), ticket(0) {};
  virtual ~KContactDataSource() {};
 
- virtual void connect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void disconnect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void get_changes(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void commit(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg);
+ virtual void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync);
+ virtual void commit(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg);
 
  private:
  QString calc_hash(KABC::Addressee &e);
diff --git a/src/kcal.cpp b/src/kcal.cpp
index 5f00dcc..3608ea6 100644
--- a/src/kcal.cpp
+++ b/src/kcal.cpp
@@ -175,7 +175,9 @@ bool KCalSharedResource::commit(OSyncDataSource *dsobj, OSyncContext *ctx, OSync
  * This function exists because the logic for converting the events or to-dos
  * is the same, only the objtype and format is different.
  */
-bool KCalSharedResource::report_incidence(OSyncDataSource *dsobj, OSyncPluginInfo *info, OSyncContext *ctx,
+bool KCalSharedResource::report_incidence(OSyncDataSource *dsobj,
+                                          OSyncObjTypeSink *sink,
+                                          OSyncPluginInfo *info, OSyncContext *ctx,
                                           KCal::Incidence *e, OSyncObjFormat *objformat)
 {
  /* Build a local calendar for the incidence data */
@@ -186,12 +188,12 @@ bool KCalSharedResource::report_incidence(OSyncDataSource *dsobj, OSyncPluginInf
  KCal::ICalFormat format;
  QString data = format.toString(&cal);
 
- return dsobj->report_change(info, ctx, e->uid(), data, calc_hash(e), objformat);
+ return dsobj->report_change(sink, info, ctx, e->uid(), data, calc_hash(e), objformat);
 }
 
 //--------------------------------------------------------------------------------
 
-bool KCalSharedResource::get_event_changes(OSyncDataSource *dsobj, OSyncPluginInfo *info, OSyncContext *ctx)
+bool KCalSharedResource::get_event_changes(OSyncDataSource *dsobj, OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
  OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info);
  OSyncObjFormat *objformat = osync_format_env_find_objformat(formatenv, "vevent20");
@@ -210,7 +212,7 @@ bool KCalSharedResource::get_event_changes(OSyncDataSource *dsobj, OSyncPluginIn
  if ( (*i)->uid().contains("KABC_Birthday") || (*i)->uid().contains("KABC_Anniversary") )
  continue;
 
- if (!report_incidence(dsobj, info, ctx, *i, objformat))
+ if (!report_incidence(dsobj, sink, info, ctx, *i, objformat))
  return false;
  }
 
@@ -219,7 +221,7 @@ bool KCalSharedResource::get_event_changes(OSyncDataSource *dsobj, OSyncPluginIn
 
 //--------------------------------------------------------------------------------
 
-bool KCalSharedResource::get_todo_changes(OSyncDataSource *dsobj, OSyncPluginInfo *info, OSyncContext *ctx)
+bool KCalSharedResource::get_todo_changes(OSyncDataSource *dsobj, OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
  OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info);
  OSyncObjFormat *objformat = osync_format_env_find_objformat(formatenv, "vtodo20");
@@ -230,7 +232,7 @@ bool KCalSharedResource::get_todo_changes(OSyncDataSource *dsobj, OSyncPluginInf
  if ( ! dsobj->has_category((*i)->categories()) )
  continue;
 
- if (!report_incidence(dsobj, info, ctx, *i, objformat))
+ if (!report_incidence(dsobj, sink, info, ctx, *i, objformat))
  return false;
  }
 
@@ -239,23 +241,23 @@ bool KCalSharedResource::get_todo_changes(OSyncDataSource *dsobj, OSyncPluginInf
 
 //--------------------------------------------------------------------------------
 
-void KCalEventDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
+void KCalEventDataSource::connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
  if (kcal->open(ctx))
-          OSyncDataSource::connect(info, ctx);
+          OSyncDataSource::connect(sink, info, ctx);
 }
 
 //--------------------------------------------------------------------------------
 
-void KCalTodoDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
+void KCalTodoDataSource::connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
  if (kcal->open(ctx))
- OSyncDataSource::connect(info, ctx);
+ OSyncDataSource::connect(sink, info, ctx);
 }
 
 //--------------------------------------------------------------------------------
 
-void KCalEventDataSource::disconnect(OSyncPluginInfo *, OSyncContext *ctx)
+void KCalEventDataSource::disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *, OSyncContext *ctx)
 {
  if (kcal->close(ctx))
  osync_context_report_success(ctx);
@@ -263,7 +265,7 @@ void KCalEventDataSource::disconnect(OSyncPluginInfo *, OSyncContext *ctx)
 
 //--------------------------------------------------------------------------------
 
-void KCalTodoDataSource::disconnect(OSyncPluginInfo *, OSyncContext *ctx)
+void KCalTodoDataSource::disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *, OSyncContext *ctx)
 {
  if (kcal->close(ctx))
  osync_context_report_success(ctx);
@@ -271,15 +273,14 @@ void KCalTodoDataSource::disconnect(OSyncPluginInfo *, OSyncContext *ctx)
 
 //--------------------------------------------------------------------------------
 
-void KCalEventDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
+void KCalEventDataSource::get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync)
 {
  osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx);
 
  OSyncError *error = NULL;
+ OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
 
- OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info);
-
- if (osync_objtype_sink_get_slowsync(sink)) {
+ if (slow_sync) {
  osync_trace(TRACE_INTERNAL, "Got slow-sync, resetting hashtable");
  if (!osync_hashtable_slowsync(hashtable, &error)) {
  osync_context_report_osyncerror(ctx, error);
@@ -288,7 +289,7 @@ void KCalEventDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
  }
  }
 
- if (!kcal->get_event_changes(this, info, ctx)) {
+ if (!kcal->get_event_changes(this, sink, info, ctx)) {
  osync_context_report_error(ctx, OSYNC_ERROR_GENERIC, "Error while reciving latest changes.");
  osync_trace(TRACE_EXIT_ERROR, "%s: error in get_todo_changes", __PRETTY_FUNCTION__);
  return;
@@ -297,7 +298,7 @@ void KCalEventDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
  OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info);
  OSyncObjFormat *objformat = osync_format_env_find_objformat(formatenv, "vevent20");
 
- if (!report_deleted(info, ctx, objformat)) {
+ if (!report_deleted(sink, info, ctx, objformat)) {
  osync_context_report_error(ctx, OSYNC_ERROR_GENERIC, "Error while detecting latest changes.");
  osync_trace(TRACE_EXIT_ERROR, "%s", __PRETTY_FUNCTION__);
  return;
@@ -309,18 +310,17 @@ void KCalEventDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
 
 //--------------------------------------------------------------------------------
 
-void KCalTodoDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
+void KCalTodoDataSource::get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync)
 {
  osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx);
 
  OSyncError *error = NULL;
 
- OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info);
-
  OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info);
  OSyncObjFormat *objformat = osync_format_env_find_objformat(formatenv, "vtodo20");
+ OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
 
- if (osync_objtype_sink_get_slowsync(sink)) {
+ if (slow_sync) {
  osync_trace(TRACE_INTERNAL, "Got slow-sync");
  if (!osync_hashtable_slowsync(hashtable, &error)) {
  osync_context_report_osyncerror(ctx, error);
@@ -330,13 +330,13 @@ void KCalTodoDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
 
  }
 
- if (!kcal->get_todo_changes(this, info, ctx)) {
+ if (!kcal->get_todo_changes(this, sink, info, ctx)) {
  osync_trace(TRACE_EXIT_ERROR, "%s: error in get_todo_changes", __PRETTY_FUNCTION__);
  osync_context_report_error(ctx, OSYNC_ERROR_GENERIC, "Error while detecting latest changes.");
  return;
  }
 
- if (!report_deleted(info, ctx, objformat)) {
+ if (!report_deleted(sink, info, ctx, objformat)) {
  osync_trace(TRACE_EXIT_ERROR, "%s", __PRETTY_FUNCTION__);
  osync_context_report_error(ctx, OSYNC_ERROR_GENERIC, "Error while detecting deleted entries.");
  return;
@@ -348,24 +348,26 @@ void KCalTodoDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
 
 //--------------------------------------------------------------------------------
 
-void KCalEventDataSource::commit(OSyncPluginInfo *, OSyncContext *ctx, OSyncChange *chg)
+void KCalEventDataSource::commit(OSyncObjTypeSink *sink, OSyncPluginInfo *, OSyncContext *ctx, OSyncChange *chg)
 {
  // We use the same function for events and to-do
  if (!kcal->commit(this, ctx, chg))
  return;
 
+ OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
  osync_hashtable_update_change(hashtable, chg);
  osync_context_report_success(ctx);
 }
 
 //--------------------------------------------------------------------------------
 
-void KCalTodoDataSource::commit(OSyncPluginInfo *, OSyncContext *ctx, OSyncChange *chg)
+void KCalTodoDataSource::commit(OSyncObjTypeSink *sink, OSyncPluginInfo *, OSyncContext *ctx, OSyncChange *chg)
 {
  // We use the same function for calendar and to-do
  if (!kcal->commit(this, ctx, chg))
  return;
 
+ OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
  osync_hashtable_update_change(hashtable, chg);
  osync_context_report_success(ctx);
 }
diff --git a/src/kcal.h b/src/kcal.h
index 1d53891..d3b9082 100644
--- a/src/kcal.h
+++ b/src/kcal.h
@@ -35,15 +35,15 @@ class KCalSharedResource
  KCalSharedResource() : calendar(0), refcount(0) { }
  bool open(OSyncContext *ctx);
  bool close(OSyncContext *ctx);
- bool get_event_changes(OSyncDataSource *dsobj, OSyncPluginInfo *info, OSyncContext *ctx);
- bool get_todo_changes(OSyncDataSource *dsobj, OSyncPluginInfo *info, OSyncContext *ctx);
+ bool get_event_changes(OSyncDataSource *dsobj, OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ bool get_todo_changes(OSyncDataSource *dsobj, OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
  bool commit(OSyncDataSource *dsobj, OSyncContext *ctx, OSyncChange *chg);
 
  private:
  KCal::CalendarResources *calendar;
  int refcount;
 
- bool report_incidence(OSyncDataSource *dsobj, OSyncPluginInfo *info, OSyncContext *ctx,
+ bool report_incidence(OSyncDataSource *dsobj, OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx,
                                       KCal::Incidence *e, OSyncObjFormat *objformat);
 };
 
@@ -55,10 +55,10 @@ class KCalEventDataSource : public OSyncDataSource
  KCalEventDataSource(KCalSharedResource *kcal) : OSyncDataSource("event"), kcal(kcal) {};
  virtual ~KCalEventDataSource() {};
 
- virtual void connect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void disconnect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void get_changes(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void commit(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg);
+ virtual void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync);
+ virtual void commit(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg);
 
  private:
  KCalSharedResource *kcal;
@@ -72,10 +72,10 @@ class KCalTodoDataSource : public OSyncDataSource
  KCalTodoDataSource(KCalSharedResource *kcal) : OSyncDataSource("todo"), kcal(kcal) {};
  virtual ~KCalTodoDataSource() {};
 
- virtual void connect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void disconnect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void get_changes(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void commit(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg);
+ virtual void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync);
+ virtual void commit(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg);
 
  private:
  KCalSharedResource *kcal;
diff --git a/src/knotes.cpp b/src/knotes.cpp
index bbce782..b98e883 100644
--- a/src/knotes.cpp
+++ b/src/knotes.cpp
@@ -36,7 +36,7 @@ SOFTWARE IS DISCLAIMED.
 
 //--------------------------------------------------------------------------------
 
-void KNotesDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
+void KNotesDataSource::connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx)
 {
  osync_trace(TRACE_ENTRY, "%s(%p, %p)", __PRETTY_FUNCTION__, info, ctx);
 
@@ -68,14 +68,14 @@ void KNotesDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx)
 
  kn_iface = new KNotesIface_stub("knotes", "KNotesIface");
 
- OSyncDataSource::connect(info, ctx);
+ OSyncDataSource::connect(sink, info, ctx);
 
  osync_trace(TRACE_EXIT, "%s", __PRETTY_FUNCTION__);
 }
 
 //--------------------------------------------------------------------------------
 
-void KNotesDataSource::disconnect(OSyncPluginInfo *, OSyncContext *ctx)
+void KNotesDataSource::disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *, OSyncContext *ctx)
 {
  osync_trace(TRACE_ENTRY, "%s(%p)", __func__, ctx);
 
@@ -125,7 +125,7 @@ static QString strip_html(QString input)
 
 //--------------------------------------------------------------------------------
 
-void KNotesDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
+void KNotesDataSource::get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync)
 {
  osync_trace(TRACE_ENTRY, "%s(%p)", __func__, ctx);
  QMap <KNoteID_t,QString> fNotes;
@@ -139,8 +139,8 @@ void KNotesDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
  return;
  }
 
- OSyncObjTypeSink *sink = osync_plugin_info_find_objtype(info, objtype);
- if (osync_objtype_sink_get_slowsync(sink)) {
+ OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
+ if (slow_sync) {
  osync_trace(TRACE_INTERNAL, "Got slow-sync, resetting hashtable");
  if (!osync_hashtable_slowsync(hashtable, &error)) {
  osync_context_report_osyncerror(ctx, error);
@@ -161,7 +161,7 @@ void KNotesDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
  hash_value.update(data.utf8());
  QString hash = hash_value.base64Digest();
 
- if ( !report_change(info, ctx, uid, data, hash, objformat) ) {
+ if ( !report_change(sink, info, ctx, uid, data, hash, objformat) ) {
  osync_context_report_error(ctx, OSYNC_ERROR_GENERIC, "Failed to get changes");
  osync_trace(TRACE_EXIT_ERROR, "%s", __PRETTY_FUNCTION__);
  return;
@@ -170,7 +170,7 @@ void KNotesDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
  hash_value.reset();
  }
 
- if (!report_deleted(info, ctx, objformat)) {
+ if (!report_deleted(sink, info, ctx, objformat)) {
  osync_context_report_error(ctx, OSYNC_ERROR_GENERIC, "Failed detecting deleted changes.");
  osync_trace(TRACE_EXIT_ERROR, "%s", __func__);
  return;
@@ -182,7 +182,7 @@ void KNotesDataSource::get_changes(OSyncPluginInfo *info, OSyncContext *ctx)
 
 //--------------------------------------------------------------------------------
 
-void KNotesDataSource::commit(OSyncPluginInfo *, OSyncContext *ctx, OSyncChange *chg)
+void KNotesDataSource::commit(OSyncObjTypeSink *sink, OSyncPluginInfo *, OSyncContext *ctx, OSyncChange *chg)
 {
  osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, ctx, chg);
  OSyncChangeType type = osync_change_get_changetype(chg);
@@ -258,6 +258,7 @@ void KNotesDataSource::commit(OSyncPluginInfo *, OSyncContext *ctx, OSyncChange
  }*/
  }
 
+ OSyncHashTable *hashtable = osync_objtype_sink_get_hashtable(sink);
  osync_hashtable_update_change(hashtable, chg);
  osync_context_report_success(ctx);
  osync_trace(TRACE_EXIT, "%s", __func__);
diff --git a/src/knotes.h b/src/knotes.h
index 39e225f..8c4d2d6 100644
--- a/src/knotes.h
+++ b/src/knotes.h
@@ -57,10 +57,10 @@ class KNotesDataSource : public OSyncDataSource
  KNotesDataSource() : OSyncDataSource("note") {};
  virtual ~KNotesDataSource() {};
 
- virtual void connect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void disconnect(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void get_changes(OSyncPluginInfo *info, OSyncContext *ctx);
- virtual void commit(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg);
+ virtual void connect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void disconnect(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx);
+ virtual void get_changes(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, osync_bool slow_sync);
+ virtual void commit(OSyncObjTypeSink *sink, OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg);
 
  private:
  DCOPClient *kn_dcop;
--
1.6.2.1


------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Opensync-devel mailing list
Opensync-devel@...
https://lists.sourceforge.net/lists/listinfo/opensync-devel

 « Return to Thread: Updating kdepim plugin