static gboolean
_gsignond_db_read_key_value (
sqlite3_stmt *stmt,
- GHashTable* data)
+ GSignondDictionary* data)
{
gchar *key = NULL;
- GBytes *value = NULL;
+ GVariant *value = NULL;
key = g_strdup ((const gchar *)sqlite3_column_text (stmt, 0));
- value = g_bytes_new ((gconstpointer) sqlite3_column_blob(stmt, 1),
- (gsize) sqlite3_column_bytes(stmt, 1));
+ value = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE,
+ (gconstpointer) sqlite3_column_blob(stmt, 1),
+ (gsize) sqlite3_column_bytes(stmt, 1), sizeof(guchar));
- g_hash_table_insert(data, key, value);
+ gsignond_dictionary_set (data, key, value);
return TRUE;
}
return ret;
}
-GHashTable *
+GSignondDictionary *
gsignond_db_secret_database_load_data (
GSignondDbSecretDatabase *self,
const guint32 id,
{
gchar *query = NULL;
gint rows = 0;
- GHashTable *data = NULL;
+ GSignondDictionary *data = NULL;
g_return_val_if_fail (GSIGNOND_DB_IS_SECRET_DATABASE (self), NULL);
RETURN_IF_NOT_OPEN (self, NULL);
- data = g_hash_table_new_full ((GHashFunc)g_str_hash,
- (GEqualFunc)g_str_equal,
- (GDestroyNotify)g_free,
- (GDestroyNotify)g_bytes_unref);
+ data = gsignond_dictionary_new ();
query = sqlite3_mprintf (
"SELECT key, value "
if (G_UNLIKELY (rows <= 0)) {
DBG ("Load data from DB failed");
- g_hash_table_destroy(data);
+ gsignond_dictionary_unref (data);
data = NULL;
}
GSignondDbSecretDatabase *self,
const guint32 id,
const guint32 method,
- GHashTable *data)
+ GSignondDictionary *data)
{
gchar *query = NULL;
gint ret = 0;
GHashTableIter iter;
gchar *key = NULL;
- GBytes *value = NULL;
+ GVariant *value = NULL;
guint32 data_counter = 0;
GSignondDbSqlDatabase *parent = NULL;
g_hash_table_iter_init (&iter, data);
while (g_hash_table_iter_next (&iter,(gpointer *) &key,
(gpointer *) &value)) {
- data_counter = data_counter + strlen (key) + g_bytes_get_size (value);
+ data_counter = data_counter + strlen (key) + g_variant_get_size(value);
if (data_counter >= GSIGNOND_DB_MAX_DATA_STORAGE) {
gsignond_db_sql_database_rollback_transaction (parent);
DBG ("size limit is exceeded");
while (g_hash_table_iter_next (&iter, (gpointer *)&key,
(gpointer *) &value )) {
gsize val_size;
- const gchar *value_data;
+ gconstpointer value_data;
sqlite3_stmt *sql_stmt;
ret = sqlite3_prepare_v2 (parent->priv->db, statement, -1,
gsignond_db_sql_database_rollback_transaction (parent);
return FALSE;
}
- value_data = (const gchar *)g_bytes_get_data (value, &val_size);
+ value_data = g_variant_get_data (value);
+ val_size = g_variant_get_size (value);
sqlite3_bind_int(sql_stmt, 1, (int)id);
sqlite3_bind_int(sql_stmt, 2, (int)method);
sqlite3_bind_text(sql_stmt, 3, key, -1, SQLITE_STATIC);
- sqlite3_bind_blob(sql_stmt, 4, (const void*)value_data, (int)val_size,
- SQLITE_STATIC);
+ sqlite3_bind_blob(sql_stmt, 4, value_data, (int)val_size, SQLITE_STATIC);
ret = sqlite3_step (sql_stmt);
if (G_UNLIKELY (ret != SQLITE_DONE)) {
return ret;
}
-
-
-
static void
_compare_key_value(
gchar *key,
- GBytes *value,
+ GVariant *value,
Data *user_data)
{
- GBytes *value2 = NULL;
- value2 = (GBytes *)g_hash_table_lookup (user_data->table, key);
- if (value2 && g_bytes_compare (value2, value) == 0)
+ GVariant *value2 = (GVariant *)g_hash_table_lookup (user_data->table, key);
+
+ if (value2 && g_variant_get_size (value2) == g_variant_get_size (value2)
+ && memcmp (g_variant_get_data (value2),
+ g_variant_get_data(value),
+ g_variant_get_size(value2)) == 0) {
return;
+ }
user_data->status = 0;
}
data = g_hash_table_new_full ((GHashFunc)g_str_hash,
(GEqualFunc)g_str_equal,
(GDestroyNotify)NULL,
- (GDestroyNotify)g_bytes_unref);
+ (GDestroyNotify)g_variant_unref);
fail_if (data == NULL);
- g_hash_table_insert (data,"key1",g_bytes_new("value1", strlen ("value1")));
- g_hash_table_insert (data,"key2",g_bytes_new("value2", strlen ("value2")));
- g_hash_table_insert (data,"key3",g_bytes_new("value3", strlen ("value3")));
- g_hash_table_insert (data,"key4",g_bytes_new("value4", strlen ("value4")));
- g_hash_table_insert (data,"key5",g_bytes_new("value5", strlen ("value5")));
-
+ g_hash_table_insert (data,"key1",g_variant_new_string ("string_value"));
+ g_hash_table_insert (data,"key2",g_variant_new_double (12223.4223));
+ g_hash_table_insert (data,"key3",g_variant_new_uint16(20));
+ g_hash_table_insert (data,"key4",g_variant_new("^ay", "byte_value"));
fail_unless (gsignond_db_secret_database_update_data (
database, id, method, data) == TRUE);
-
data2 = gsignond_db_secret_database_load_data (database, id, method);
fail_if (data2 == NULL);
input.table = data;
data = g_hash_table_new_full ((GHashFunc)g_str_hash,
(GEqualFunc)g_str_equal,
(GDestroyNotify)NULL,
- (GDestroyNotify)g_bytes_unref);
+ (GDestroyNotify)g_variant_unref);
fail_if (data == NULL);
- g_hash_table_insert (data,"key1",g_bytes_new("value1", strlen ("value1")));
- g_hash_table_insert (data,"key2",g_bytes_new("value2", strlen ("value2")));
- g_hash_table_insert (data,"key3",g_bytes_new("value3", strlen ("value3")));
- g_hash_table_insert (data,"key4",g_bytes_new("value4", strlen ("value4")));
- g_hash_table_insert (data,"key5",g_bytes_new("value5", strlen ("value5")));
+ g_hash_table_insert (data,"key1",g_variant_new_string ("string_value"));
+ g_hash_table_insert (data,"key2",g_variant_new_double (12223.4223));
+ g_hash_table_insert (data,"key3",g_variant_new_uint16(20));
+ g_hash_table_insert (data,"key4",g_variant_new("^ay", "byte_value"));
fail_unless (gsignond_secret_storage_update_data (
storage, id, method, data) == TRUE);
data = g_hash_table_new_full ((GHashFunc)g_str_hash,
(GEqualFunc)g_str_equal,
(GDestroyNotify)NULL,
- (GDestroyNotify)g_bytes_unref);
- g_hash_table_insert (data,"key1",g_bytes_new("value1", strlen ("value1")));
- g_hash_table_insert (data,"key2",g_bytes_new("value2", strlen ("value2")));
- g_hash_table_insert (data,"key3",g_bytes_new("value3", strlen ("value3")));
- g_hash_table_insert (data,"key4",g_bytes_new("value4", strlen ("value4")));
- g_hash_table_insert (data,"key5",g_bytes_new("value5", strlen ("value5")));
+ (GDestroyNotify)g_variant_unref);
+ g_hash_table_insert (data,"key1",g_variant_new_string ("string_value"));
+ g_hash_table_insert (data,"key2",g_variant_new_double (12223.4223));
+ g_hash_table_insert (data,"key3",g_variant_new_uint16(20));
+ g_hash_table_insert (data,"key4",g_variant_new("^ay", "byte_value"));
fail_unless (gsignond_db_credentials_database_update_data (
credentials_db, 0, "method1", data) == FALSE);