[tracker/clientapi-2: 4/20] libtracker-client: General code clean up
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/clientapi-2: 4/20] libtracker-client: General code clean up
- Date: Thu, 14 Jan 2010 12:32:23 +0000 (UTC)
commit 21107c3d8c25e7079e19d6e5484f855f1f16accf
Author: Martyn Russell <martyn lanedo com>
Date: Tue Jan 12 20:00:06 2010 +0000
libtracker-client: General code clean up
- Use GSlice for reply callbacks
- Fix copyright
- Group functions properly
- Rename some variables/functions
src/libtracker-client/tracker.c | 772 +++++++++++++++++++--------------------
src/libtracker-client/tracker.h | 9 +-
2 files changed, 378 insertions(+), 403 deletions(-)
---
diff --git a/src/libtracker-client/tracker.c b/src/libtracker-client/tracker.c
index 6428422..54a8622 100644
--- a/src/libtracker-client/tracker.c
+++ b/src/libtracker-client/tracker.c
@@ -1,5 +1,6 @@
-/* Tracker - indexer and metadata database engine
+/*
* Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
+ * Copyright (C) 2008-2010, Nokia
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -20,6 +21,7 @@
#include "config.h"
#include <string.h>
+
#include <dbus/dbus.h>
#include <dbus/dbus-glib-lowlevel.h>
@@ -92,57 +94,57 @@
**/
typedef struct {
- DBusGProxy *proxy;
- DBusGProxyCall *pending_call;
-} PendingCallData;
+ gint timeout;
+ gboolean enable_warnings;
+ gboolean force_service;
+} TrackerClientPrivate;
typedef struct {
- TrackerReplyArray callback;
- gpointer data;
- TrackerClient *client;
- guint id;
-} CallbackArray;
+ DBusGProxy *proxy;
+ DBusGProxyCall *pending_call;
+} PendingCallData;
typedef struct {
- TrackerReplyGPtrArray callback;
- gpointer data;
- TrackerClient *client;
- guint id;
+ TrackerReplyGPtrArray func;
+ gpointer data;
+ TrackerClient *client;
+ guint id;
} CallbackGPtrArray;
typedef struct {
- TrackerReplyVoid callback;
- gpointer data;
- TrackerClient *client;
- guint id;
+ TrackerReplyVoid func;
+ gpointer data;
+ TrackerClient *client;
+ guint id;
} CallbackVoid;
+/* Deprecated and only used for 0.6 API */
+typedef struct {
+ TrackerReplyArray func;
+ gpointer data;
+ TrackerClient *client;
+ guint id;
+} CallbackArray;
+
+static void client_finalize (GObject *object);
+static void client_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void client_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+
enum {
- PROP_0 = 0,
- PROP_TIMEOUT,
+ PROP_0,
PROP_ENABLE_WARNINGS,
PROP_FORCE_SERVICE,
+ PROP_TIMEOUT,
};
static guint pending_call_id = 0;
-static void tracker_client_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void tracker_client_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static gboolean start_service (DBusConnection *connection,
- const char *name);
-
-typedef struct {
- gint timeout;
- gboolean enable_warnings;
- gboolean force_service;
-} TrackerClientPrivate;
-
G_DEFINE_TYPE(TrackerClient, tracker_client, G_TYPE_OBJECT)
#define TRACKER_CLIENT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_CLIENT, TrackerClientPrivate))
@@ -153,22 +155,60 @@ pending_call_free (PendingCallData *data)
g_slice_free (PendingCallData, data);
}
-static void
-tracker_client_finalize (GObject *object)
+static guint
+pending_call_new (TrackerClient *client,
+ DBusGProxy *proxy,
+ DBusGProxyCall *pending_call)
{
- TrackerClient *client = TRACKER_CLIENT (object);
+ PendingCallData *data;
+ guint id;
- if (client->proxy_statistics) {
- g_object_unref (client->proxy_statistics);
- }
+ id = ++pending_call_id;
- if (client->proxy_resources) {
- g_object_unref (client->proxy_resources);
+ data = g_slice_new (PendingCallData);
+ data->proxy = proxy;
+ data->pending_call = pending_call;
+
+ g_hash_table_insert (client->pending_calls,
+ GUINT_TO_POINTER (id),
+ data);
+
+ client->last_call = id;
+
+ return id;
+}
+
+static gboolean
+start_service (DBusConnection *connection,
+ const char *name)
+{
+ DBusError error;
+ DBusMessage *request, *reply;
+ guint32 flags;
+
+ dbus_error_init (&error);
+
+ flags = 0;
+
+ request = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "StartServiceByName");
+ dbus_message_append_args (request, DBUS_TYPE_STRING, &name, DBUS_TYPE_UINT32, &flags, DBUS_TYPE_INVALID);
+
+ reply = dbus_connection_send_with_reply_and_block (connection, request, -1, &error);
+ dbus_message_unref (request);
+
+ if (reply == NULL) {
+ dbus_error_free (&error);
+ return FALSE;
}
- if (client->pending_calls) {
- g_hash_table_unref (client->pending_calls);
+ if (dbus_set_error_from_message (&error, reply)) {
+ dbus_message_unref (reply);
+ dbus_error_free (&error);
+ return FALSE;
}
+
+ dbus_message_unref (reply);
+ return TRUE;
}
static void
@@ -178,19 +218,9 @@ tracker_client_class_init (TrackerClientClass *klass)
object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = tracker_client_finalize;
- object_class->set_property = tracker_client_set_property;
- object_class->get_property = tracker_client_get_property;
-
- g_object_class_install_property (object_class,
- PROP_TIMEOUT,
- g_param_spec_int ("timeout",
- "Timeout",
- "Timeout",
- 0,
- G_MAXINT,
- 0,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+ object_class->finalize = client_finalize;
+ object_class->set_property = client_set_property;
+ object_class->get_property = client_get_property;
g_object_class_install_property (object_class,
PROP_ENABLE_WARNINGS,
@@ -199,7 +229,6 @@ tracker_client_class_init (TrackerClientClass *klass)
"Enable warnings",
TRUE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
g_object_class_install_property (object_class,
PROP_FORCE_SERVICE,
g_param_spec_boolean ("force-service",
@@ -207,15 +236,80 @@ tracker_client_class_init (TrackerClientClass *klass)
"Force service startup",
TRUE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+ g_object_class_install_property (object_class,
+ PROP_TIMEOUT,
+ g_param_spec_int ("timeout",
+ "Timeout",
+ "Timeout",
+ 0,
+ G_MAXINT,
+ 0,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
g_type_class_add_private (object_class, sizeof (TrackerClientPrivate));
}
static void
-tracker_client_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+tracker_client_init (TrackerClient *client)
+{
+ TrackerClientPrivate *priv = TRACKER_CLIENT_GET_PRIVATE (client);
+ GError *error = NULL;
+ DBusGConnection *connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+
+ if (connection == NULL || error != NULL) {
+ if (priv->enable_warnings) {
+ g_warning ("Unable to connect to dbus: %s\n",
+ error->message);
+ }
+ g_error_free (error);
+ return;
+ }
+
+ if (priv->force_service && !start_service (dbus_g_connection_get_connection (connection), TRACKER_SERVICE)) {
+ /* unable to start tracker-store */
+ dbus_g_connection_unref (connection);
+ return;
+ }
+
+ client->pending_calls = g_hash_table_new_full (NULL, NULL, NULL,
+ (GDestroyNotify) pending_call_free);
+
+ client->proxy_statistics =
+ dbus_g_proxy_new_for_name (connection,
+ TRACKER_SERVICE,
+ TRACKER_OBJECT "/Statistics",
+ TRACKER_INTERFACE_STATISTICS);
+
+ client->proxy_resources =
+ dbus_g_proxy_new_for_name (connection,
+ TRACKER_SERVICE,
+ TRACKER_OBJECT "/Resources",
+ TRACKER_INTERFACE_RESOURCES);
+}
+
+static void
+client_finalize (GObject *object)
+{
+ TrackerClient *client = TRACKER_CLIENT (object);
+
+ if (client->proxy_statistics) {
+ g_object_unref (client->proxy_statistics);
+ }
+
+ if (client->proxy_resources) {
+ g_object_unref (client->proxy_resources);
+ }
+
+ if (client->pending_calls) {
+ g_hash_table_unref (client->pending_calls);
+ }
+}
+
+static void
+client_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
TrackerClient *client = TRACKER_CLIENT (object);
TrackerClientPrivate *priv = TRACKER_CLIENT_GET_PRIVATE (object);
@@ -241,10 +335,10 @@ tracker_client_set_property (GObject *object,
}
static void
-tracker_client_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+client_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
TrackerClientPrivate *priv = TRACKER_CLIENT_GET_PRIVATE (object);
@@ -264,83 +358,66 @@ tracker_client_get_property (GObject *object,
}
static void
-tracker_client_init (TrackerClient *client)
-{
- TrackerClientPrivate *priv = TRACKER_CLIENT_GET_PRIVATE (client);
- GError *error = NULL;
- DBusGConnection *connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
- if (connection == NULL || error != NULL) {
- if (priv->enable_warnings) {
- g_warning ("Unable to connect to dbus: %s\n",
- error->message);
- }
- g_error_free (error);
- return;
- }
-
- if (priv->force_service && !start_service (dbus_g_connection_get_connection (connection), TRACKER_SERVICE)) {
- /* unable to start tracker-store */
- dbus_g_connection_unref (connection);
- return;
- }
-
- client->pending_calls = g_hash_table_new_full (NULL, NULL, NULL,
- (GDestroyNotify) pending_call_free);
-
- client->proxy_statistics =
- dbus_g_proxy_new_for_name (connection,
- TRACKER_SERVICE,
- TRACKER_OBJECT "/Statistics",
- TRACKER_INTERFACE_STATISTICS);
-
- client->proxy_resources =
- dbus_g_proxy_new_for_name (connection,
- TRACKER_SERVICE,
- TRACKER_OBJECT "/Resources",
- TRACKER_INTERFACE_RESOURCES);
-}
-
-
-static void
-tracker_GPtrArray_reply (DBusGProxy *proxy,
+callback_with_gptrarray (DBusGProxy *proxy,
GPtrArray *OUT_result,
GError *error,
gpointer user_data)
{
- CallbackGPtrArray *s;
-
- s = user_data;
+ CallbackGPtrArray *cb = user_data;
- g_hash_table_remove (s->client->pending_calls,
- GUINT_TO_POINTER (s->id));
+ g_hash_table_remove (cb->client->pending_calls,
+ GUINT_TO_POINTER (cb->id));
- (*(TrackerReplyGPtrArray) s->callback) (OUT_result,
- error,
- s->data);
+ (*(TrackerReplyGPtrArray) cb->func) (OUT_result, error, cb->data);
- g_object_unref (s->client);
- g_free (s);
+ g_object_unref (cb->client);
+ g_slice_free (CallbackGPtrArray, cb);
}
static void
-tracker_void_reply (DBusGProxy *proxy,
+callback_with_void (DBusGProxy *proxy,
GError *error,
gpointer user_data)
{
+
+ CallbackVoid *cb = user_data;
- CallbackVoid *s;
-
- s = user_data;
+ g_hash_table_remove (cb->client->pending_calls,
+ GUINT_TO_POINTER (cb->id));
+
+ (*(TrackerReplyVoid) cb->func) (error, cb->data);
- g_hash_table_remove (s->client->pending_calls,
- GUINT_TO_POINTER (s->id));
-
- (*(TrackerReplyVoid) s->callback) (error,
- s->data);
+ g_object_unref (cb->client);
+ g_slice_free (CallbackVoid, cb);
+}
- g_object_unref (s->client);
- g_free (s);
+/* Deprecated and only used for 0.6 API */
+static void
+callback_with_array (DBusGProxy *proxy,
+ GPtrArray *OUT_result,
+ GError *error,
+ gpointer user_data)
+{
+
+ CallbackArray *cb = user_data;
+ gchar **uris;
+ gint i;
+
+ g_hash_table_remove (cb->client->pending_calls,
+ GUINT_TO_POINTER (cb->id));
+
+ uris = g_new0 (gchar *, OUT_result->len + 1);
+ for (i = 0; i < OUT_result->len; i++) {
+ uris[i] = ((gchar **) OUT_result->pdata[i])[0];
+ }
+
+ (*(TrackerReplyArray) cb->func) (uris, error, cb->data);
+
+ g_ptr_array_foreach (OUT_result, (GFunc) g_free, NULL);
+ g_ptr_array_free (OUT_result, TRUE);
+
+ g_object_unref (cb->client);
+ g_slice_free (CallbackArray, cb);
}
/**
@@ -408,62 +485,6 @@ tracker_sparql_escape (const gchar *str)
return escaped_string;
}
-static gboolean
-start_service (DBusConnection *connection,
- const char *name)
-{
- DBusError error;
- DBusMessage *request, *reply;
- guint32 flags;
-
- dbus_error_init (&error);
-
- flags = 0;
-
- request = dbus_message_new_method_call (DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, "StartServiceByName");
- dbus_message_append_args (request, DBUS_TYPE_STRING, &name, DBUS_TYPE_UINT32, &flags, DBUS_TYPE_INVALID);
-
- reply = dbus_connection_send_with_reply_and_block (connection, request, -1, &error);
- dbus_message_unref (request);
-
- if (reply == NULL) {
- dbus_error_free (&error);
- return FALSE;
- }
-
- if (dbus_set_error_from_message (&error, reply)) {
- dbus_message_unref (reply);
- dbus_error_free (&error);
- return FALSE;
- }
-
- dbus_message_unref (reply);
- return TRUE;
-}
-
-static guint
-pending_call_new (TrackerClient *client,
- DBusGProxy *proxy,
- DBusGProxyCall *pending_call)
-{
- PendingCallData *data;
- guint id;
-
- id = ++pending_call_id;
-
- data = g_slice_new (PendingCallData);
- data->proxy = proxy;
- data->pending_call = pending_call;
-
- g_hash_table_insert (client->pending_calls,
- GUINT_TO_POINTER (id),
- data);
-
- client->last_call = id;
-
- return id;
-}
-
/**
* tracker_client_new:
* @enable_warnings: a #gboolean to determine if warnings are issued in
@@ -496,55 +517,6 @@ tracker_client_new (gboolean enable_warnings,
return client;
}
-TrackerClient *
-tracker_connect_no_service_start (gboolean enable_warnings,
- gint timeout)
-{
- TrackerClient *client;
-
- g_type_init ();
-
- client = g_object_new (TRACKER_TYPE_CLIENT,
- "timeout", timeout,
- "enable-warnings", enable_warnings,
- "force-service", FALSE,
- NULL);
-
- return client;
-}
-
-/**
- * tracker_connect:
- * @enable_warnings: a #gboolean to determine if warnings are issued in
- * cases where they are found.
- * @timeout: a #gint used for D-Bus call timeouts.
- *
- * This function calls tracker_client_new().
- *
- * Deprecated: 0.8: Use tracker_client_new() instead.
- **/
-TrackerClient *
-tracker_connect (gboolean enable_warnings,
- gint timeout)
-{
- return tracker_client_new (enable_warnings, timeout);
-}
-
-/**
- * tracker_disconnect:
- * @client: a #TrackerClient.
- *
- * This will disconnect the D-Bus connections to Tracker services and
- * free the allocated #TrackerClient by tracker_connect().
- *
- * Deprecated: 0.8: Use g_object_unref() instead.
- **/
-void
-tracker_disconnect (TrackerClient *client)
-{
- g_object_unref (client);
-}
-
/**
* tracker_cancel_call:
* @client: a #TrackerClient.
@@ -821,23 +793,21 @@ tracker_statistics_get_async (TrackerClient *client,
TrackerReplyGPtrArray callback,
gpointer user_data)
{
- CallbackGPtrArray *s;
+ CallbackGPtrArray *cb;
DBusGProxyCall *call;
- guint id;
- s = g_new0 (CallbackGPtrArray, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackGPtrArray);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
call = org_freedesktop_Tracker1_Statistics_get_async (client->proxy_statistics,
- tracker_GPtrArray_reply,
- s);
+ callback_with_gptrarray,
+ cb);
- id = pending_call_new (client, client->proxy_statistics, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_statistics, call);
- return id;
+ return cb->id;
}
guint
@@ -846,24 +816,22 @@ tracker_resources_load_async (TrackerClient *client,
TrackerReplyVoid callback,
gpointer user_data)
{
- CallbackVoid *s;
+ CallbackVoid *cb;
DBusGProxyCall *call;
- guint id;
- s = g_new0 (CallbackVoid, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackVoid);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
call = org_freedesktop_Tracker1_Resources_load_async (client->proxy_resources,
uri,
- tracker_void_reply,
- s);
+ callback_with_void,
+ cb);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
- return id;
+ return cb->id;
}
/**
@@ -886,24 +854,22 @@ tracker_resources_sparql_query_async (TrackerClient *client,
TrackerReplyGPtrArray callback,
gpointer user_data)
{
- CallbackGPtrArray *s;
+ CallbackGPtrArray *cb;
DBusGProxyCall *call;
- guint id;
- s = g_new0 (CallbackGPtrArray, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackGPtrArray);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
call = org_freedesktop_Tracker1_Resources_sparql_query_async (client->proxy_resources,
query,
- tracker_GPtrArray_reply,
- s);
+ callback_with_gptrarray,
+ cb);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
- return id;
+ return cb->id;
}
/**
@@ -925,24 +891,22 @@ tracker_resources_sparql_update_async (TrackerClient *client,
TrackerReplyVoid callback,
gpointer user_data)
{
- CallbackVoid *s;
+ CallbackVoid *cb;
DBusGProxyCall *call;
- guint id;
- s = g_new0 (CallbackVoid, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackVoid);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
call = org_freedesktop_Tracker1_Resources_sparql_update_async (client->proxy_resources,
query,
- tracker_void_reply,
- s);
+ callback_with_void,
+ callback);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
- return id;
+ return cb->id;
}
guint
@@ -951,24 +915,22 @@ tracker_resources_sparql_update_blank_async (TrackerClient *client,
TrackerReplyGPtrArray callback,
gpointer user_data)
{
- CallbackGPtrArray *s;
+ CallbackGPtrArray *cb;
DBusGProxyCall *call;
- guint id;
- s = g_new0 (CallbackGPtrArray, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackGPtrArray);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
call = org_freedesktop_Tracker1_Resources_sparql_update_blank_async (client->proxy_resources,
query,
- tracker_GPtrArray_reply,
- s);
+ callback_with_gptrarray,
+ callback);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
- return id;
+ return cb->id;
}
/**
@@ -990,24 +952,22 @@ tracker_resources_batch_sparql_update_async (TrackerClient *client,
TrackerReplyVoid callback,
gpointer user_data)
{
- CallbackVoid *s;
+ CallbackVoid *cb;
DBusGProxyCall *call;
- guint id;
- s = g_new0 (CallbackVoid, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackVoid);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
call = org_freedesktop_Tracker1_Resources_batch_sparql_update_async (client->proxy_resources,
query,
- tracker_void_reply,
- s);
+ callback_with_void,
+ callback);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
- return id;
+ return cb->id;
}
/**
@@ -1027,59 +987,26 @@ tracker_resources_batch_commit_async (TrackerClient *client,
TrackerReplyVoid callback,
gpointer user_data)
{
- CallbackVoid *s;
+ CallbackVoid *cb;
DBusGProxyCall *call;
- guint id;
- s = g_new0 (CallbackVoid, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackVoid);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
call = org_freedesktop_Tracker1_Resources_batch_commit_async (client->proxy_resources,
- tracker_void_reply,
- s);
+ callback_with_void,
+ callback);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
- return id;
+ return cb->id;
}
/* tracker_search_metadata_by_text_async is used by GTK+ */
static void
-tracker_search_reply (DBusGProxy *proxy,
- GPtrArray *OUT_result,
- GError *error,
- gpointer user_data)
-{
-
- CallbackArray *s;
- gchar **uris;
- gint i;
-
- s = user_data;
-
- g_hash_table_remove (s->client->pending_calls,
- GUINT_TO_POINTER (s->id));
-
- uris = g_new0 (gchar *, OUT_result->len + 1);
- for (i = 0; i < OUT_result->len; i++) {
- uris[i] = ((gchar **) OUT_result->pdata[i])[0];
- }
-
- (*(TrackerReplyArray) s->callback) (uris,
- error,
- s->data);
-
- g_ptr_array_foreach (OUT_result, (GFunc) g_free, NULL);
- g_ptr_array_free (OUT_result, TRUE);
- g_object_unref (s->client);
- g_free (s);
-}
-
-static void
sparql_append_string_literal (GString *sparql,
const gchar *str)
{
@@ -1115,6 +1042,55 @@ sparql_append_string_literal (GString *sparql,
}
/**
+ * tracker_connect:
+ * @enable_warnings: a #gboolean to determine if warnings are issued in
+ * cases where they are found.
+ * @timeout: a #gint used for D-Bus call timeouts.
+ *
+ * This function calls tracker_client_new().
+ *
+ * Deprecated: 0.8: Use tracker_client_new() instead.
+ **/
+TrackerClient *
+tracker_connect (gboolean enable_warnings,
+ gint timeout)
+{
+ return tracker_client_new (enable_warnings, timeout);
+}
+
+TrackerClient *
+tracker_connect_no_service_start (gboolean enable_warnings,
+ gint timeout)
+{
+ TrackerClient *client;
+
+ g_type_init ();
+
+ client = g_object_new (TRACKER_TYPE_CLIENT,
+ "timeout", timeout,
+ "enable-warnings", enable_warnings,
+ "force-service", FALSE,
+ NULL);
+
+ return client;
+}
+
+/**
+ * tracker_disconnect:
+ * @client: a #TrackerClient.
+ *
+ * This will disconnect the D-Bus connections to Tracker services and
+ * free the allocated #TrackerClient by tracker_connect().
+ *
+ * Deprecated: 0.8: Use g_object_unref() instead.
+ **/
+void
+tracker_disconnect (TrackerClient *client)
+{
+ g_object_unref (client);
+}
+
+/**
* tracker_search_metadata_by_text_async:
* @client: a #TrackerClient.
* @query: a string representing what to search for.
@@ -1135,19 +1111,18 @@ tracker_search_metadata_by_text_async (TrackerClient *client,
TrackerReplyArray callback,
gpointer user_data)
{
- CallbackArray *s;
+ CallbackArray *cb;
GString *sparql;
DBusGProxyCall *call;
- guint id;
g_return_val_if_fail (client != NULL, 0);
g_return_val_if_fail (query != NULL, 0);
g_return_val_if_fail (callback != NULL, 0);
- s = g_new0 (CallbackArray, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackArray);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
sparql = g_string_new ("SELECT ?file WHERE { ?file a nfo:FileDataObject ; fts:match ");
sparql_append_string_literal (sparql, query);
@@ -1155,15 +1130,13 @@ tracker_search_metadata_by_text_async (TrackerClient *client,
call = org_freedesktop_Tracker1_Resources_sparql_query_async (client->proxy_resources,
sparql->str,
- tracker_search_reply,
- s);
-
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ callback_with_array,
+ callback);
+ cb->id = pending_call_new (client, client->proxy_resources, call);
- g_string_free (sparql, TRUE);
+ g_string_free (sparql, TRUE);
- return id;
+ return cb->id;
}
/**
@@ -1189,20 +1162,19 @@ tracker_search_metadata_by_text_and_location_async (TrackerClient *client,
TrackerReplyArray callback,
gpointer user_data)
{
- CallbackArray *s;
+ CallbackArray *cb;
GString *sparql;
DBusGProxyCall *call;
- guint id;
g_return_val_if_fail (client != NULL, 0);
g_return_val_if_fail (query != NULL, 0);
g_return_val_if_fail (location != NULL, 0);
g_return_val_if_fail (callback != NULL, 0);
- s = g_new0 (CallbackArray, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackArray);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
sparql = g_string_new ("SELECT ?file WHERE { ?file a nfo:FileDataObject ; fts:match ");
sparql_append_string_literal (sparql, query);
@@ -1212,15 +1184,14 @@ tracker_search_metadata_by_text_and_location_async (TrackerClient *client,
call = org_freedesktop_Tracker1_Resources_sparql_query_async (client->proxy_resources,
sparql->str,
- tracker_search_reply,
- s);
+ callback_with_array,
+ callback);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
g_string_free (sparql, TRUE);
- return id;
+ return cb->id;
}
/**
@@ -1241,16 +1212,15 @@ tracker_search_metadata_by_text_and_location_async (TrackerClient *client,
* Deprecated: 0.8: Use tracker_resources_sparql_query() instead.
**/
guint
-tracker_search_metadata_by_text_and_mime_async (TrackerClient *client,
- const gchar *query,
- const gchar **mimes,
- TrackerReplyArray callback,
- gpointer user_data)
+tracker_search_metadata_by_text_and_mime_async (TrackerClient *client,
+ const gchar *query,
+ const gchar **mimes,
+ TrackerReplyArray callback,
+ gpointer user_data)
{
- CallbackArray *s;
+ CallbackArray *cb;
GString *sparql;
DBusGProxyCall *call;
- guint id;
gint i;
g_return_val_if_fail (client != NULL, 0);
@@ -1258,18 +1228,20 @@ tracker_search_metadata_by_text_and_mime_async (TrackerClient *client,
g_return_val_if_fail (mimes != NULL, 0);
g_return_val_if_fail (callback != NULL, 0);
- s = g_new0 (CallbackArray, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackArray);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
sparql = g_string_new ("SELECT ?file WHERE { ?file a nfo:FileDataObject ; nie:mimeType ?mime ; fts:match ");
sparql_append_string_literal (sparql, query);
g_string_append (sparql, " . FILTER (");
+
for (i = 0; mimes[i]; i++) {
if (i > 0) {
g_string_append (sparql, " || ");
}
+
g_string_append (sparql, "?mime = ");
sparql_append_string_literal (sparql, mimes[i]);
}
@@ -1277,15 +1249,14 @@ tracker_search_metadata_by_text_and_mime_async (TrackerClient *client,
call = org_freedesktop_Tracker1_Resources_sparql_query_async (client->proxy_resources,
sparql->str,
- tracker_search_reply,
- s);
+ callback_with_array,
+ cb);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
g_string_free (sparql, TRUE);
- return id;
+ return cb->id;
}
/**
@@ -1307,17 +1278,16 @@ tracker_search_metadata_by_text_and_mime_async (TrackerClient *client,
* Deprecated: 0.8: Use tracker_resources_sparql_query() instead.
**/
guint
-tracker_search_metadata_by_text_and_mime_and_location_async (TrackerClient *client,
- const gchar *query,
- const gchar **mimes,
- const gchar *location,
- TrackerReplyArray callback,
- gpointer user_data)
+tracker_search_metadata_by_text_and_mime_and_location_async (TrackerClient *client,
+ const gchar *query,
+ const gchar **mimes,
+ const gchar *location,
+ TrackerReplyArray callback,
+ gpointer user_data)
{
- CallbackArray *s;
+ CallbackArray *cb;
GString *sparql;
DBusGProxyCall *call;
- guint id;
gint i;
g_return_val_if_fail (client != NULL, 0);
@@ -1326,37 +1296,41 @@ tracker_search_metadata_by_text_and_mime_and_location_async (TrackerClient
g_return_val_if_fail (location != NULL, 0);
g_return_val_if_fail (callback != NULL, 0);
- s = g_new0 (CallbackArray, 1);
- s->callback = callback;
- s->data = user_data;
- s->client = g_object_ref (client);
+ cb = g_slice_new0 (CallbackArray);
+ cb->func = callback;
+ cb->data = user_data;
+ cb->client = g_object_ref (client);
sparql = g_string_new ("SELECT ?file WHERE { ?file a nfo:FileDataObject ; nie:mimeType ?mime ; fts:match ");
sparql_append_string_literal (sparql, query);
+
g_string_append (sparql, " . FILTER (fn:starts-with(?file,");
sparql_append_string_literal (sparql, location);
+
g_string_append (sparql, ")");
g_string_append (sparql, " && (");
+
for (i = 0; mimes[i]; i++) {
if (i > 0) {
g_string_append (sparql, " || ");
}
+
g_string_append (sparql, "?mime = ");
sparql_append_string_literal (sparql, mimes[i]);
}
+
g_string_append (sparql, ")");
g_string_append (sparql, ") }");
call = org_freedesktop_Tracker1_Resources_sparql_query_async (client->proxy_resources,
sparql->str,
- tracker_search_reply,
- s);
+ callback_with_array,
+ callback);
- id = pending_call_new (client, client->proxy_resources, call);
- s->id = id;
+ cb->id = pending_call_new (client, client->proxy_resources, call);
g_string_free (sparql, TRUE);
- return id;
+ return cb->id;
}
diff --git a/src/libtracker-client/tracker.h b/src/libtracker-client/tracker.h
index 65b6121..20bc429 100644
--- a/src/libtracker-client/tracker.h
+++ b/src/libtracker-client/tracker.h
@@ -1,5 +1,6 @@
-/* Tracker - indexer and metadata database engine
+/*
* Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
+ * Copyright (C) 2008-2010, Nokia
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -17,8 +18,8 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef TRACKER_H
-#define TRACKER_H
+#ifndef __TRACKER_CLIENT_H__
+#define __TRACKER_CLIENT_H__
#include <dbus/dbus-glib-bindings.h>
@@ -194,4 +195,4 @@ guint tracker_search_metadata_by_text_and_mime_and_location_async (TrackerClient
G_END_DECLS
-#endif /* TRACKER_H */
+#endif /* __TRACKER_CLIENT_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]