From 04fc09acaf4e57ecc5834874a4e6a1c4a377e7c8 Mon Sep 17 00:00:00 2001 From: Charlie Brej Date: Thu, 5 Aug 2010 17:27:08 +0100 Subject: Implemented DBUS frontend query implementation --- src/main.c | 15 ++++++++++++--- src/tidbit-dbus.c | 17 ++++++++++++----- 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; } -- cgit v1.2.3