summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharlie Brej <cbrej@cs.man.ac.uk>2010-08-05 17:27:08 +0100
committerCharlie Brej <cbrej@cs.man.ac.uk>2010-08-05 17:27:08 +0100
commit04fc09acaf4e57ecc5834874a4e6a1c4a377e7c8 (patch)
tree1b494888ba1e13b5970fca97fbad688d6902b6fe
parentfd052ea999822f52ca884ab5b7b47977bd71e3bf (diff)
Implemented DBUS frontend query implementation
-rw-r--r--src/main.c15
-rw-r--r--src/tidbit-dbus.c17
2 files changed, 24 insertions, 8 deletions
diff --git a/src/main.c b/src/main.c
index 1ad3710..8c2fa78 100644
--- a/src/main.c
+++ b/src/main.c
@@ -82,16 +82,23 @@ int main(int argc, char* argv[])
+ PtrTidbitKey key = tidbit_key_get ("testapp", "Tidbit Test App v0.1");
+
PtrTidbitRecord record = tidbit_record_new ("test/tablename");
tidbit_record_add_element (record, "key", "value");
tidbit_record_add_element (record, "another_key", "value");
- PtrTidbitKey key = tidbit_key_get ("testapp", "Tidbit Test App v0.1");
-
tidbit_record_sign (record, key);
+ tidbit_database_insert_record (database, record);
+ tidbit_record_unref(record);
+ record = tidbit_record_new ("test/tablename");
+ tidbit_record_add_element (record, "key", "value2");
+ tidbit_record_add_element (record, "another_key", "value2");
+ tidbit_record_sign (record, key);
tidbit_database_insert_record (database, record);
g_print("Insert: %s\n", record->raw);
- tidbit_record_unref (record);
+ tidbit_record_unref(record);
+ tidbit_key_unref(key);
record = tidbit_database_fetch_record (database, record->guid);
g_print("Fetch: %s\n", record->raw);
@@ -102,6 +109,8 @@ int main(int argc, char* argv[])
PtrTidbitGuidSet guid_set = tidbit_database_query (database, query);
tidbit_guid_set_foreach (guid_set, print_guid, database);
+ tidbit_query_unref (query);
+ tidbit_guid_set_unref (guid_set);
diff --git a/src/tidbit-dbus.c b/src/tidbit-dbus.c
index a043e17..b2186b0 100644
--- a/src/tidbit-dbus.c
+++ b/src/tidbit-dbus.c
@@ -93,6 +93,13 @@ gboolean tidbit_dbus_fetch (TidbitDbus *object, gchar *signature, gchar **reply_
return TRUE;
}
+static void guid_set_to_string_array_func (PtrTidbitGuid guid, gpointer user_data)
+{
+ char ***guids_array = (char***) user_data; //This is rather horrid.
+ **guids_array = g_strdup(tidbit_guid_get_string (guid));
+ (*guids_array)++;
+}
+
#define DBUS_STRUCT_STRING_STRING_INT (dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID))
gboolean tidbit_dbus_query (TidbitDbus *object, gchar *table_name, GPtrArray *elements, char ***guids, gpointer userdata)
@@ -110,14 +117,14 @@ gboolean tidbit_dbus_query (TidbitDbus *object, gchar *table_name, GPtrArray *el
guint32 type;
dbus_g_type_struct_get (dbus_value, 0, &key, 1, &value, 2, &type, G_MAXUINT);
tidbit_query_add_exp (query, key, value, type);
- g_print("%s %s %s %d\n", table_name, key, value, type);
}
g_free (dbus_value);
PtrTidbitGuidSet guid_set = tidbit_database_query (tidbit_dbus->database, query);
- *guids = g_new(char *, 3);
- (*guids)[0] = g_strdup("fgdg");
- (*guids)[1] = g_strdup("fgdg");
- (*guids)[2] = NULL;
+ int count = tidbit_guid_set_get_count (guid_set);
+ char **guids_array = g_new(char*, count+1);
+ guids_array[count] = NULL;
+ *guids = guids_array;
+ tidbit_guid_set_foreach (guid_set, guid_set_to_string_array_func, &guids_array);
return TRUE;
}