[tracker/clientapi-2: 10/20] libtracker-client: Make tracker_client_new() use flags



commit 25c6607d4ca54170f9f4f00c00b2c7310eca3a1b
Author: Martyn Russell <martyn lanedo com>
Date:   Wed Jan 13 11:19:02 2010 +0000

    libtracker-client: Make tracker_client_new() use flags

 .../libtracker-client-sections.txt                 |   36 ++++++++++++++-----
 .../libtracker-client/libtracker-client.types      |    1 +
 src/libtracker-client/tracker.c                    |   31 ++++++++---------
 src/libtracker-client/tracker.h                    |   17 ++++++++-
 src/libtracker-gtk/tracker-keyword-store.c         |    2 +-
 src/libtracker-gtk/tracker-metadata-tile.c         |    2 +-
 src/libtracker-gtk/tracker-tag-bar.c               |    2 +-
 src/libtracker-miner/tracker-miner.c               |    2 +-
 src/plugins/evolution/tracker-evolution-plugin.c   |    8 +++--
 src/plugins/nautilus/tracker-tags-extension.c      |    2 +-
 src/plugins/nautilus/tracker-tags-view.c           |    2 +-
 src/tracker-search-bar/tracker-results-window.c    |    2 +-
 src/tracker-utils/tracker-import.c                 |    2 +-
 src/tracker-utils/tracker-info.c                   |    2 +-
 src/tracker-utils/tracker-search.c                 |    2 +-
 src/tracker-utils/tracker-sparql.c                 |    2 +-
 src/tracker-utils/tracker-stats.c                  |    2 +-
 src/tracker-utils/tracker-status.c                 |    2 +-
 src/tracker-utils/tracker-tag.c                    |    2 +-
 src/tracker-writeback/tracker-writeback-consumer.c |    2 +-
 20 files changed, 77 insertions(+), 46 deletions(-)
---
diff --git a/docs/reference/libtracker-client/libtracker-client-sections.txt b/docs/reference/libtracker-client/libtracker-client-sections.txt
index cad9f83..ded5eea 100644
--- a/docs/reference/libtracker-client/libtracker-client-sections.txt
+++ b/docs/reference/libtracker-client/libtracker-client-sections.txt
@@ -1,9 +1,21 @@
 <SECTION>
 <FILE>tracker</FILE>
-<TITLE>Connecting</TITLE>
+TRACKER_DBUS_SERVICE
+TRACKER_DBUS_OBJECT
+TRACKER_DBUS_INTERFACE_RESOURCES
+TRACKER_DBUS_INTERFACE_STATISTICS
+<TITLE>TrackerClient</TITLE>
 TrackerClient
-tracker_connect
-tracker_disconnect
+TrackerClientFlags
+tracker_client_new
+<SUBSECTION Standard>
+TRACKER_CLIENT
+TRACKER_IS_CLIENT
+TRACKER_TYPE_CLIENT
+tracker_client_get_type
+TRACKER_CLIENT_CLASS
+TRACKER_IS_CLIENT_CLASS
+TRACKER_CLIENT_GET_CLASS
 </SECTION>
 
 <SECTION>
@@ -22,6 +34,7 @@ tracker_sparql_escape
 <SECTION>
 <FILE>tracker_statistics</FILE>
 <TITLE>Statistics</TITLE>
+TrackerReplyGPtrArray
 tracker_statistics_get
 tracker_statistics_get_async
 </SECTION>
@@ -31,26 +44,29 @@ tracker_statistics_get_async
 <TITLE>Resources</TITLE>
 TrackerReplyGPtrArray
 TrackerReplyVoid
-tracker_resources_load
 tracker_resources_sparql_query
-tracker_resources_sparql_update
-tracker_resources_sparql_update_blank
-tracker_resources_batch_sparql_update
-tracker_resources_batch_commit
-tracker_resources_load_async
 tracker_resources_sparql_query_async
+tracker_resources_sparql_update
 tracker_resources_sparql_update_async
+tracker_resources_sparql_update_blank
 tracker_resources_sparql_update_blank_async
+tracker_resources_batch_sparql_update
 tracker_resources_batch_sparql_update_async
+tracker_resources_batch_commit
 tracker_resources_batch_commit_async
+tracker_resources_load
+tracker_resources_load_async
 </SECTION>
 
 <SECTION>
 <FILE>tracker_search</FILE>
-<TITLE>Search (Deprecated)</TITLE>
+<TITLE>Search</TITLE>
 TrackerReplyArray
+tracker_connect
+tracker_disconnect
 tracker_search_metadata_by_text_async
 tracker_search_metadata_by_text_and_location_async
 tracker_search_metadata_by_text_and_mime_async
 tracker_search_metadata_by_text_and_mime_and_location_async
 </SECTION>
+
diff --git a/docs/reference/libtracker-client/libtracker-client.types b/docs/reference/libtracker-client/libtracker-client.types
index e69de29..cac95ce 100644
--- a/docs/reference/libtracker-client/libtracker-client.types
+++ b/docs/reference/libtracker-client/libtracker-client.types
@@ -0,0 +1 @@
+tracker_client_get_type
diff --git a/src/libtracker-client/tracker.c b/src/libtracker-client/tracker.c
index 671fec2..9fd2e01 100644
--- a/src/libtracker-client/tracker.c
+++ b/src/libtracker-client/tracker.c
@@ -353,11 +353,13 @@ client_constructed (GObject *object)
 		return;
 	}
 
-	if (!start_service (dbus_g_connection_get_connection (connection), 
-	                    TRACKER_DBUS_SERVICE)) {
-		/* unable to start tracker-store */
-		dbus_g_connection_unref (connection);
-		return;
+	if (private->force_service) {
+		if (!start_service (dbus_g_connection_get_connection (connection), 
+		                    TRACKER_DBUS_SERVICE)) {
+			/* unable to start tracker-store */
+			dbus_g_connection_unref (connection);
+			return;
+		}
 	}
 
 	private->pending_calls = g_hash_table_new_full (NULL, NULL, NULL,
@@ -510,9 +512,7 @@ tracker_sparql_escape (const gchar *str)
 
 /**
  * tracker_client_new:
- * @enable_warnings: a #gboolean to determine if warnings are issued in
- * cases where they are found.
- * @service_start: start the D-Bus service if not running.
+ * @flags: This can be one or more combinations of #TrackerClientFlags
  * @timeout: a #gint used for D-Bus call timeouts.
  *
  * Creates a connection over D-Bus to the Tracker store for doing data
@@ -525,15 +525,14 @@ tracker_sparql_escape (const gchar *str)
  * g_object_unref() when finished with.
  **/
 TrackerClient *
-tracker_client_new (gboolean enable_warnings,
-                    gboolean service_start,
-                    gint     timeout)
+tracker_client_new (TrackerClientFlags flags,
+                    gint               timeout)
 {
 	g_type_init ();
 
 	return g_object_new (TRACKER_TYPE_CLIENT, 
-	                     "enable-warnings", enable_warnings,
-	                     "force-service", service_start, 
+	                     "enable-warnings", (flags & TRACKER_CLIENT_ENABLE_WARNINGS),
+	                     "force-service", !(flags & TRACKER_CLIENT_DO_NOT_START_SERVICE), 
 	                     "timeout", timeout, 
 	                     NULL);
 }
@@ -671,8 +670,8 @@ tracker_resources_load (TrackerClient  *client,
  *  GError *error = NULL;
  *  const gchar *query;
  *
- *  /&ast; Create D-Bus connection with no warnings and no timeout. &ast;/
- *  client = tracker_client_new (FALSE, TRUE, 0);
+ *  /&ast; Create D-Bus connection with no warnings and maximum timeout. &ast;/
+ *  client = tracker_client_new (0, G_MAXINT);
  *  query = "SELECT"
  *          "  ?album"
  *          "  ?title"
@@ -1134,7 +1133,7 @@ TrackerClient *
 tracker_connect (gboolean enable_warnings,
                  gint     timeout)
 {
-	return tracker_client_new (enable_warnings, TRUE, timeout);
+	return tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, timeout);
 }
 
 /**
diff --git a/src/libtracker-client/tracker.h b/src/libtracker-client/tracker.h
index 0d3b9ca..cf54cf0 100644
--- a/src/libtracker-client/tracker.h
+++ b/src/libtracker-client/tracker.h
@@ -46,6 +46,20 @@ typedef struct {
 } TrackerClientClass;
 
 /**
+ * TrackerClientFlags:
+ * @TRACKER_CLIENT_ENABLE_WARNINGS: If supplied warnings will be
+ * produced upon erronous situations. This is usually turned off for
+ * applications that want to provide their own error reporting.
+ * @TRACKER_CLIENT_DO_NOT_START_SERVICE: If supplied then creating a
+ * new #TrackerClient #GObject will not attempt start the D-Bus
+ * service for tracker-store pre-emptively.
+ */
+typedef enum {
+	TRACKER_CLIENT_ENABLE_WARNINGS      = 1 << 1,
+	TRACKER_CLIENT_DO_NOT_START_SERVICE = 1 << 2,
+} TrackerClientFlags;
+
+/**
  * TrackerReplyGPtrArray:
  * @result: a #GPtrArray with the results of the query.
  * @error: a #GError.
@@ -72,8 +86,7 @@ typedef void (*TrackerReplyVoid)      (GError    *error,
                                        gpointer   user_data);
 
 GType          tracker_client_get_type                     (void) G_GNUC_CONST;
-TrackerClient *tracker_client_new                          (gboolean                enable_warnings,
-                                                            gboolean                service_start,
+TrackerClient *tracker_client_new                          (TrackerClientFlags      flags,
                                                             gint                    timeout);
 
 gboolean       tracker_cancel_call                         (TrackerClient          *client,
diff --git a/src/libtracker-gtk/tracker-keyword-store.c b/src/libtracker-gtk/tracker-keyword-store.c
index ae0bf25..1c38bbe 100644
--- a/src/libtracker-gtk/tracker-keyword-store.c
+++ b/src/libtracker-gtk/tracker-keyword-store.c
@@ -61,7 +61,7 @@ tracker_keyword_store_init (TrackerKeywordStore *store)
 
 	//setup private members
 	store->keywords = g_hash_table_new (g_str_hash, g_str_equal);
-	store->tracker_client = tracker_client_new (TRUE, TRUE, -1);
+	store->tracker_client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS,  -1);
 
 	/* TODO: Port to SPARQL */
 #if 0
diff --git a/src/libtracker-gtk/tracker-metadata-tile.c b/src/libtracker-gtk/tracker-metadata-tile.c
index 6d2e4d1..73d4efc 100644
--- a/src/libtracker-gtk/tracker-metadata-tile.c
+++ b/src/libtracker-gtk/tracker-metadata-tile.c
@@ -1352,7 +1352,7 @@ tracker_metadata_tile_new (void)
 	tile = g_object_new (TRACKER_TYPE_METADATA_TILE, NULL);
 	priv = TRACKER_METADATA_TILE_GET_PRIVATE (tile);
 
-	priv->client = tracker_client_new (TRUE, TRUE, -1);
+	priv->client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, -1);
 
 	return tile;
 }
diff --git a/src/libtracker-gtk/tracker-tag-bar.c b/src/libtracker-gtk/tracker-tag-bar.c
index f67bd70..8a8ca3e 100644
--- a/src/libtracker-gtk/tracker-tag-bar.c
+++ b/src/libtracker-gtk/tracker-tag-bar.c
@@ -449,7 +449,7 @@ tracker_tag_bar_new (void)
 	                        NULL);
 	priv = TRACKER_TAG_BAR_GET_PRIVATE (tag_bar);
 
-	priv->client = tracker_client_new (TRUE, TRUE, -1);
+	priv->client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, -1);
 
 	return tag_bar;
 }
diff --git a/src/libtracker-miner/tracker-miner.c b/src/libtracker-miner/tracker-miner.c
index 208a5ea..be614e7 100644
--- a/src/libtracker-miner/tracker-miner.c
+++ b/src/libtracker-miner/tracker-miner.c
@@ -302,7 +302,7 @@ tracker_miner_init (TrackerMiner *miner)
 	miner->private = priv = TRACKER_MINER_GET_PRIVATE (miner);
 
 	/* Set the timeout to 0 so we don't have one */
-	priv->client = tracker_client_new (TRUE, TRUE, 0);
+	priv->client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, 0);
 
 	priv->pauses = g_hash_table_new_full (g_direct_hash,
 	                                      g_direct_equal,
diff --git a/src/plugins/evolution/tracker-evolution-plugin.c b/src/plugins/evolution/tracker-evolution-plugin.c
index 5f56765..7587215 100644
--- a/src/plugins/evolution/tracker-evolution-plugin.c
+++ b/src/plugins/evolution/tracker-evolution-plugin.c
@@ -2148,7 +2148,8 @@ name_owner_changed_cb (DBusGProxy *proxy,
 
 		if (tracker_is_empty_string (old_owner) && !tracker_is_empty_string (new_owner)) {
 			if (!priv->client) {
-				priv->client = tracker_client_new (FALSE, FALSE, G_MAXINT);
+				priv->client = tracker_client_new (TRACKER_CLIENT_DO_NOT_START_SERVICE,
+				                                   G_MAXINT);
 			}
 			register_client (user_data);
 		}
@@ -2341,7 +2342,8 @@ miner_started (TrackerMiner *miner)
 	g_static_rec_mutex_lock (priv->mutex);
 
 	if (!priv->client) {
-		priv->client = tracker_client_new (FALSE, FALSE, G_MAXINT);
+		priv->client = tracker_client_new (TRACKER_CLIENT_DO_NOT_START_SERVICE,
+		                                   G_MAXINT);
 	}
 
 	g_static_rec_mutex_unlock (priv->mutex);
@@ -2444,7 +2446,7 @@ miner_resumed (TrackerMiner *miner)
 	priv->of_total = 0;
 
 	if (!priv->client) {
-		priv->client = tracker_client_new (FALSE, FALSE, G_MAXINT);
+		priv->client = tracker_client_new (TRACKER_CLIENT_DO_NOT_START_SERVICE, G_MAXINT);
 	}
 	g_static_rec_mutex_unlock (priv->mutex);
 
diff --git a/src/plugins/nautilus/tracker-tags-extension.c b/src/plugins/nautilus/tracker-tags-extension.c
index 782bb76..d545d04 100644
--- a/src/plugins/nautilus/tracker-tags-extension.c
+++ b/src/plugins/nautilus/tracker-tags-extension.c
@@ -272,7 +272,7 @@ static void
 tracker_tags_extension_init (TrackerTagsExtension *self)
 {
 	self->private = TRACKER_TAGS_EXTENSION_GET_PRIVATE (self);
-	self->private->tracker_client = tracker_client_new (TRUE, TRUE, G_MAXINT);
+	self->private->tracker_client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, G_MAXINT);
 }
 
 static void
diff --git a/src/plugins/nautilus/tracker-tags-view.c b/src/plugins/nautilus/tracker-tags-view.c
index d925cba..1c5d820 100644
--- a/src/plugins/nautilus/tracker-tags-view.c
+++ b/src/plugins/nautilus/tracker-tags-view.c
@@ -94,7 +94,7 @@ tracker_tags_view_init (TrackerTagsView *tv)
 {
 	tv->private = TRACKER_TAGS_VIEW_GET_PRIVATE (tv);
 
-	tv->private->tracker_client = tracker_client_new (TRUE, TRUE, G_MAXINT);
+	tv->private->tracker_client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, G_MAXINT);
 	tv->private->files = NULL;
 	tv->private->store = gtk_list_store_new (N_COLUMNS, 
 	                                         G_TYPE_INT,      /* Selection type */ 
diff --git a/src/tracker-search-bar/tracker-results-window.c b/src/tracker-search-bar/tracker-results-window.c
index def3c43..070066a 100644
--- a/src/tracker-search-bar/tracker-results-window.c
+++ b/src/tracker-search-bar/tracker-results-window.c
@@ -380,7 +380,7 @@ tracker_results_window_init (TrackerResultsWindow *window)
 
 	priv = TRACKER_RESULTS_WINDOW_GET_PRIVATE (window);
 
-	priv->client = tracker_client_new (FALSE, TRUE, G_MAXINT);
+	priv->client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, G_MAXINT);
 
 	priv->frame = gtk_frame_new (NULL);
 	gtk_container_add (GTK_CONTAINER (window), priv->frame);
diff --git a/src/tracker-utils/tracker-import.c b/src/tracker-utils/tracker-import.c
index 391e035..ea883a3 100644
--- a/src/tracker-utils/tracker-import.c
+++ b/src/tracker-utils/tracker-import.c
@@ -102,7 +102,7 @@ main (int argc, char **argv)
 
 	g_option_context_free (context);
 
-	client = tracker_client_new (FALSE, TRUE, G_MAXINT);
+	client = tracker_client_new (0, G_MAXINT);
 
 	if (!client) {
 		g_printerr ("%s\n",
diff --git a/src/tracker-utils/tracker-info.c b/src/tracker-utils/tracker-info.c
index e008693..8d64d5d 100644
--- a/src/tracker-utils/tracker-info.c
+++ b/src/tracker-utils/tracker-info.c
@@ -128,7 +128,7 @@ main (int argc, char **argv)
 
 	g_option_context_free (context);
 
-	client = tracker_client_new (FALSE, TRUE, G_MAXINT);
+	client = tracker_client_new (0, G_MAXINT);
 
 	if (!client) {
 		g_printerr ("%s\n",
diff --git a/src/tracker-utils/tracker-search.c b/src/tracker-utils/tracker-search.c
index 0bd15b8..fa9ffcd 100644
--- a/src/tracker-utils/tracker-search.c
+++ b/src/tracker-utils/tracker-search.c
@@ -835,7 +835,7 @@ main (int argc, char **argv)
 
 	g_option_context_free (context);
 
-	client = tracker_client_new (FALSE, TRUE, G_MAXINT);
+	client = tracker_client_new (0, G_MAXINT);
 
 	if (!client) {
 		g_printerr ("%s\n",
diff --git a/src/tracker-utils/tracker-sparql.c b/src/tracker-utils/tracker-sparql.c
index 573e153..7331192 100644
--- a/src/tracker-utils/tracker-sparql.c
+++ b/src/tracker-utils/tracker-sparql.c
@@ -199,7 +199,7 @@ main (int argc, char **argv)
 
 	g_option_context_free (context);
 
-	client = tracker_client_new (FALSE, TRUE, G_MAXINT);
+	client = tracker_client_new (0, G_MAXINT);
 
 	if (!client) {
 		g_printerr ("%s\n",
diff --git a/src/tracker-utils/tracker-stats.c b/src/tracker-utils/tracker-stats.c
index 18e0d7b..c32ac8d 100644
--- a/src/tracker-utils/tracker-stats.c
+++ b/src/tracker-utils/tracker-stats.c
@@ -99,7 +99,7 @@ main (int argc, char **argv)
 
 	g_option_context_free (context);
 
-	client = tracker_client_new (FALSE, TRUE, G_MAXINT);
+	client = tracker_client_new (0, G_MAXINT);
 
 	if (!client) {
 		g_printerr ("%s\n",
diff --git a/src/tracker-utils/tracker-status.c b/src/tracker-utils/tracker-status.c
index db47afc..61196ee 100644
--- a/src/tracker-utils/tracker-status.c
+++ b/src/tracker-utils/tracker-status.c
@@ -392,7 +392,7 @@ main (gint argc, gchar *argv[])
 		g_thread_init (NULL);
 	}
 
-	client = tracker_client_new (FALSE, TRUE, G_MAXINT);
+	client = tracker_client_new (0, G_MAXINT);
 
 	if (!client) {
 		g_printerr ("%s\n",
diff --git a/src/tracker-utils/tracker-tag.c b/src/tracker-utils/tracker-tag.c
index af7a2bb..d7afe5a 100644
--- a/src/tracker-utils/tracker-tag.c
+++ b/src/tracker-utils/tracker-tag.c
@@ -685,7 +685,7 @@ main (int argc, char **argv)
 
 	g_option_context_free (context);
 
-	client = tracker_client_new (FALSE, TRUE, G_MAXINT);
+	client = tracker_client_new (0, G_MAXINT);
 
 	if (!client) {
 		g_printerr ("%s\n",
diff --git a/src/tracker-writeback/tracker-writeback-consumer.c b/src/tracker-writeback/tracker-writeback-consumer.c
index fee665b..98c86ee 100644
--- a/src/tracker-writeback/tracker-writeback-consumer.c
+++ b/src/tracker-writeback/tracker-writeback-consumer.c
@@ -80,7 +80,7 @@ tracker_writeback_consumer_init (TrackerWritebackConsumer *consumer)
 
 	priv = TRACKER_WRITEBACK_CONSUMER_GET_PRIVATE (consumer);
 
-	priv->client = tracker_client_new (TRUE, TRUE, 0);
+	priv->client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, 0);
 	priv->modules = g_hash_table_new_full (g_str_hash,
 	                                       g_str_equal,
 	                                       (GDestroyNotify) g_free,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]