22 #include "opensync_internals.h"
36 osync_assert_msg(table,
"You have to pass a valid hashtable to the call!");
37 osync_assert_msg(table->dbhandle,
"Hashtable not loaded yet. You have to load the hashtable first using osync_hashtable_load!");
97 table->used_entries = g_hash_table_new(g_str_hash, g_str_equal);
109 g_hash_table_destroy(table->used_entries);
126 g_hash_table_destroy(table->used_entries);
127 table->used_entries = g_hash_table_new(g_str_hash, g_str_equal);
140 return osync_db_open_hashtable(table, member, error);
152 osync_hashtable_assert_loaded(table);
155 osync_db_close(table->dbhandle);
166 osync_hashtable_assert_loaded(table);
168 return osync_db_count(table->dbhandle,
"SELECT count(*) FROM tbl_hash");
184 osync_hashtable_assert_loaded(table);
186 sqlite3 *sdb = table->dbhandle->db;
188 sqlite3_stmt *ppStmt = NULL;
189 char *query = g_strdup_printf(
"SELECT uid, hash FROM tbl_hash LIMIT 1 OFFSET %i", i);
190 sqlite3_prepare(sdb, query, -1, &ppStmt, NULL);
191 sqlite3_step(ppStmt);
192 *uid = g_strdup((gchar*)sqlite3_column_text(ppStmt, 0));
193 *hash = g_strdup((gchar*)sqlite3_column_text(ppStmt, 1));
194 sqlite3_finalize(ppStmt);
211 osync_hashtable_assert_loaded(table);
212 osync_assert_msg(change,
"Change was NULL. Bug in a plugin");
213 osync_assert_msg(change->
uid,
"No uid was set on change. Bug in a plugin");
221 osync_db_save_hash(table, change->
uid, change->
hash,
225 osync_db_delete_hash(table, change->
uid);
228 g_assert_not_reached();
247 osync_hashtable_assert_loaded(table);
249 g_hash_table_insert(table->used_entries, g_strdup(uid), GINT_TO_POINTER(1));
264 osync_hashtable_assert_loaded(table);
266 char **uidarr = osync_db_get_deleted_hash(table, objtype);
268 for (i = 0; uidarr[i]; i++) {
269 char *uid = uidarr[i];
274 osync_context_report_change(context, change);
293 osync_hashtable_assert_loaded(table);
295 char **retarr = osync_db_get_deleted_hash(table, objtype);
305 char *orighash = NULL;
326 osync_hashtable_assert_loaded(table);
329 char *orighash = NULL;
330 osync_db_get_hash(table, uid, objtype, &orighash);
334 if (strcmp(hash, orighash) == 0)
357 osync_bool retval = FALSE;
363 g_hash_table_insert(table->used_entries, g_strdup(change->
uid), GINT_TO_POINTER(1));
375 osync_hashtable_assert_loaded(table);
377 osync_db_reset_hash(table, objtype);