[tracker/configurable-bus-type: 2/2] all: Make GBusType configurable with TRACKER_BUS_TYPE



commit cd5828870695eca6103401a5289d360315c607f9
Author: Martyn Russell <martyn lanedo com>
Date:   Mon Mar 10 11:13:02 2014 +0000

    all: Make GBusType configurable with TRACKER_BUS_TYPE
    
    This works by using G_BUS_TYPE_SESSION if the env var TRACKER_BUS_TYPE is not
    set and will allow for "system" to be used as a value. If it is set, the
    system bus is used instead.

 examples/libtracker-sparql/class-signal.c        |    4 +++-
 src/libtracker-common/tracker-dbus.c             |   15 ++++++++++++++-
 src/libtracker-common/tracker-dbus.h             |    6 ++++++
 src/libtracker-control/tracker-miner-manager.c   |    4 ++--
 src/libtracker-extract/tracker-extract-client.c  |    6 ++++--
 src/libtracker-miner/tracker-miner-object.c      |   18 +++++++++---------
 src/libtracker-miner/tracker-thumbnailer.c       |    4 ++--
 src/miners/fs/tracker-main.c                     |    3 ++-
 src/miners/fs/tracker-miner-files-index.c        |    2 +-
 src/miners/fs/tracker-miner-files.c              |    3 ++-
 src/miners/fs/tracker-writeback-dispatcher.c     |    2 +-
 src/miners/fs/tracker-writeback-listener.c       |    2 +-
 src/miners/rss/tracker-miner-rss.c               |    2 +-
 src/plugins/evolution/tracker-evolution-plugin.c |    2 +-
 src/tracker-control/tracker-control-general.c    |    4 ++--
 src/tracker-control/tracker-control-status.c     |    2 +-
 src/tracker-extract/tracker-extract-decorator.c  |    2 +-
 src/tracker-writeback/tracker-writeback.c        |    2 +-
 18 files changed, 54 insertions(+), 29 deletions(-)
---
diff --git a/examples/libtracker-sparql/class-signal.c b/examples/libtracker-sparql/class-signal.c
index 3ba2ab3..e5a9e6a 100644
--- a/examples/libtracker-sparql/class-signal.c
+++ b/examples/libtracker-sparql/class-signal.c
@@ -19,6 +19,8 @@
 
 #include <gio/gio.h>
 
+#include <libtracker-common/tracker-common.h>
+
 #include <libtracker-sparql/tracker-sparql.h>
 
 static TrackerSparqlConnection *con;
@@ -87,7 +89,7 @@ main (gint argc, gchar *argv[])
 
        loop = g_main_loop_new (NULL, FALSE);
        con = tracker_sparql_connection_get (NULL, &error);
-       connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+       connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, NULL);
 
        signal_id = g_dbus_connection_signal_subscribe (connection,
                                                        TRACKER_DBUS_SERVICE,
diff --git a/src/libtracker-common/tracker-dbus.c b/src/libtracker-common/tracker-dbus.c
index 53da8e7..f65bb45 100644
--- a/src/libtracker-common/tracker-dbus.c
+++ b/src/libtracker-common/tracker-dbus.c
@@ -63,11 +63,24 @@ static GDBusConnection *connection;
 static void     client_data_free    (gpointer data);
 static gboolean client_clean_up_cb (gpointer data);
 
+inline GBusType
+tracker_bus_type (void)
+{
+       const gchar *bus = g_getenv ("TRACKER_BUS_TYPE");
+
+       if (G_UNLIKELY (bus != NULL &&
+                       g_ascii_strcasecmp (bus, "system") == 0)) {
+               return G_BUS_TYPE_SYSTEM;
+       }
+
+       return G_BUS_TYPE_SESSION;
+}
+
 static gboolean
 clients_init (void)
 {
        GError *error = NULL;
-       connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+       connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &error);
 
        if (error) {
                g_critical ("Could not connect to the D-Bus session bus, %s",
diff --git a/src/libtracker-common/tracker-dbus.h b/src/libtracker-common/tracker-dbus.h
index e7c479f..0040a69 100644
--- a/src/libtracker-common/tracker-dbus.h
+++ b/src/libtracker-common/tracker-dbus.h
@@ -28,6 +28,9 @@ G_BEGIN_DECLS
 #error "only <libtracker-common/tracker-common.h> must be included directly."
 #endif
 
+/* Allow bus type override by env var TRACKER_BUS_TYPE */
+#define TRACKER_BUS_TYPE          tracker_bus_type()
+
 #define TRACKER_DBUS_ERROR_DOMAIN "TrackerDBus"
 #define TRACKER_DBUS_ERROR        tracker_dbus_error_quark()
 
@@ -63,6 +66,9 @@ typedef enum {
        TRACKER_DBUS_ERROR_BROKEN_PIPE
 } TrackerDBusError;
 
+
+GBusType            tracker_bus_type                   (void);
+
 GQuark              tracker_dbus_error_quark           (void);
 
 /* Utils */
diff --git a/src/libtracker-control/tracker-miner-manager.c b/src/libtracker-control/tracker-miner-manager.c
index 595c90a..69ce21f 100644
--- a/src/libtracker-control/tracker-miner-manager.c
+++ b/src/libtracker-control/tracker-miner-manager.c
@@ -404,7 +404,7 @@ miner_manager_initable_init (GInitable     *initable,
        manager = TRACKER_MINER_MANAGER (initable);
        priv = TRACKER_MINER_MANAGER_GET_PRIVATE (manager);
 
-       priv->connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &inner_error);
+       priv->connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &inner_error);
        if (!priv->connection) {
                g_propagate_error (error, inner_error);
                return FALSE;
@@ -475,7 +475,7 @@ miner_manager_initable_init (GInitable     *initable,
 
                g_hash_table_insert (priv->miner_proxies, proxy, g_strdup (data->dbus_name));
 
-               data->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
+               data->watch_name_id = g_bus_watch_name (TRACKER_BUS_TYPE,
                                                        data->dbus_name,
                                                        G_BUS_NAME_WATCHER_FLAGS_NONE,
                                                        miner_appears,
diff --git a/src/libtracker-extract/tracker-extract-client.c b/src/libtracker-extract/tracker-extract-client.c
index 200fa40..ff983df 100644
--- a/src/libtracker-extract/tracker-extract-client.c
+++ b/src/libtracker-extract/tracker-extract-client.c
@@ -26,6 +26,8 @@
 #include <gio/gunixfdlist.h>
 #include <gio/gunixinputstream.h>
 
+#include <libtracker-common/tracker-dbus.h>
+
 #include "tracker-extract-client.h"
 
 /* Size of buffers used when sending data over a pipe, using DBus FD passing */
@@ -494,7 +496,7 @@ tracker_extract_client_get_metadata (GFile               *file,
        g_return_if_fail (callback != NULL);
 
        if (G_UNLIKELY (!connection)) {
-               connection = g_bus_get_sync (G_BUS_TYPE_SESSION, cancellable, &error);
+               connection = g_bus_get_sync (TRACKER_BUS_TYPE, cancellable, &error);
 
                if (error) {
                        g_simple_async_report_gerror_in_idle (G_OBJECT (file), callback, user_data, error);
@@ -556,7 +558,7 @@ tracker_extract_client_cancel_for_prefix (GFile *prefix)
        if (G_UNLIKELY (!connection)) {
                GError *error = NULL;
 
-               connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+               connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &error);
                if (error) {
                        g_warning ("Couldn't get session bus, cannot cancel extractor tasks: '%s'",
                                   error->message);
diff --git a/src/libtracker-miner/tracker-miner-object.c b/src/libtracker-miner/tracker-miner-object.c
index 9b460d4..695981d 100644
--- a/src/libtracker-miner/tracker-miner-object.c
+++ b/src/libtracker-miner/tracker-miner-object.c
@@ -411,7 +411,7 @@ miner_initable_init (GInitable     *initable,
        }
 
        /* Try to get DBus connection... */
-       miner->priv->d_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &inner_error);
+       miner->priv->d_connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &inner_error);
        if (!miner->priv->d_connection) {
                g_propagate_error (error, inner_error);
                return FALSE;
@@ -496,13 +496,13 @@ miner_initable_init (GInitable     *initable,
                return FALSE;
        }
 
-       miner->priv->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
-                                                         TRACKER_SERVICE,
-                                                         G_BUS_NAME_WATCHER_FLAGS_NONE,
-                                                         on_tracker_store_appeared,
-                                                         on_tracker_store_disappeared,
-                                                         miner,
-                                                         NULL);
+       miner->priv->watch_name_id = g_bus_watch_name (TRACKER_BUS_TYPE,
+                                                      TRACKER_SERVICE,
+                                                      G_BUS_NAME_WATCHER_FLAGS_NONE,
+                                                      on_tracker_store_appeared,
+                                                      on_tracker_store_disappeared,
+                                                      miner,
+                                                      NULL);
 
        return TRUE;
 }
@@ -961,7 +961,7 @@ miner_pause_internal (TrackerMiner  *miner,
 
        if (calling_name) {
                g_message ("Watching process with name:'%s'", calling_name);
-               watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
+               watch_name_id = g_bus_watch_name (TRACKER_BUS_TYPE,
                                                  calling_name,
                                                  G_BUS_NAME_WATCHER_FLAGS_NONE,
                                                  NULL,
diff --git a/src/libtracker-miner/tracker-thumbnailer.c b/src/libtracker-miner/tracker-thumbnailer.c
index 58fc76a..eeb3adc 100644
--- a/src/libtracker-miner/tracker-thumbnailer.c
+++ b/src/libtracker-miner/tracker-thumbnailer.c
@@ -142,9 +142,9 @@ tracker_thumbnailer_initable_init (GInitable     *initable,
        private->request_id = 1;
        private->service_is_available = FALSE;
 
-       g_message ("Thumbnailer connections being set up...");
+       g_message ("Thumbnailer connections being set up... (using same bus as Tracker, i.e. session or 
system)");
 
-       private->connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, error);
+       private->connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, error);
 
        if (!private->connection)
                return FALSE;
diff --git a/src/miners/fs/tracker-main.c b/src/miners/fs/tracker-main.c
index 1204044..6c92e4e 100644
--- a/src/miners/fs/tracker-main.c
+++ b/src/miners/fs/tracker-main.c
@@ -31,6 +31,7 @@
 #include <glib-object.h>
 #include <glib/gi18n.h>
 
+#include <libtracker-common/tracker-dbus.h>
 #include <libtracker-common/tracker-ioprio.h>
 #include <libtracker-common/tracker-log.h>
 #include <libtracker-common/tracker-ontologies.h>
@@ -768,7 +769,7 @@ store_is_available (void)
        GDBusProxy *proxy;
        gchar *name_owner;
 
-       connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+       connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, NULL);
 
        if (!connection) {
                return FALSE;
diff --git a/src/miners/fs/tracker-miner-files-index.c b/src/miners/fs/tracker-miner-files-index.c
index 7b6a67d..733f81a 100644
--- a/src/miners/fs/tracker-miner-files-index.c
+++ b/src/miners/fs/tracker-miner-files-index.c
@@ -453,7 +453,7 @@ tracker_miner_files_index_new (TrackerMinerFiles *miner_files)
 
        priv = TRACKER_MINER_FILES_INDEX_GET_PRIVATE (miner);
 
-       priv->d_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+       priv->d_connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &error);
 
        if (!priv->d_connection) {
                g_critical ("Could not connect to the D-Bus session bus, %s",
diff --git a/src/miners/fs/tracker-miner-files.c b/src/miners/fs/tracker-miner-files.c
index dd14536..059de7d 100644
--- a/src/miners/fs/tracker-miner-files.c
+++ b/src/miners/fs/tracker-miner-files.c
@@ -34,6 +34,7 @@
 #include <gio/gunixfdlist.h>
 #include <gio/gunixinputstream.h>
 
+#include <libtracker-common/tracker-dbus.h>
 #include <libtracker-common/tracker-date-time.h>
 #include <libtracker-common/tracker-ontologies.h>
 #include <libtracker-common/tracker-type-utils.h>
@@ -313,7 +314,7 @@ miner_files_initable_init (GInitable     *initable,
        }
 
        /* Set up extractor and signals */
-       mf->private->connection =  g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &inner_error);
+       mf->private->connection =  g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &inner_error);
        if (!mf->private->connection) {
                g_propagate_error (error, inner_error);
                g_prefix_error (error,
diff --git a/src/miners/fs/tracker-writeback-dispatcher.c b/src/miners/fs/tracker-writeback-dispatcher.c
index 7f7400d..c5cf42f 100644
--- a/src/miners/fs/tracker-writeback-dispatcher.c
+++ b/src/miners/fs/tracker-writeback-dispatcher.c
@@ -193,7 +193,7 @@ writeback_dispatcher_initable_init (GInitable    *initable,
                return FALSE;
        }
 
-       priv->d_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &internal_error);
+       priv->d_connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &internal_error);
 
        if (internal_error) {
                g_propagate_error (error, internal_error);
diff --git a/src/miners/fs/tracker-writeback-listener.c b/src/miners/fs/tracker-writeback-listener.c
index 0ccec24..ad36ff7 100644
--- a/src/miners/fs/tracker-writeback-listener.c
+++ b/src/miners/fs/tracker-writeback-listener.c
@@ -190,7 +190,7 @@ writeback_listener_initable_init (GInitable    *initable,
                return FALSE;
        }
 
-       priv->d_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &internal_error);
+       priv->d_connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &internal_error);
 
        if (internal_error) {
                g_propagate_error (error, internal_error);
diff --git a/src/miners/rss/tracker-miner-rss.c b/src/miners/rss/tracker-miner-rss.c
index 089ebf2..6b26131 100644
--- a/src/miners/rss/tracker-miner-rss.c
+++ b/src/miners/rss/tracker-miner-rss.c
@@ -145,7 +145,7 @@ tracker_miner_rss_init (TrackerMinerRSS *object)
 
        priv = TRACKER_MINER_RSS_GET_PRIVATE (object);
 
-       priv->connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+       priv->connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &error);
 
        if (!priv->connection) {
                g_critical ("Could not connect to the D-Bus session bus, %s",
diff --git a/src/plugins/evolution/tracker-evolution-plugin.c 
b/src/plugins/evolution/tracker-evolution-plugin.c
index db93c05..a5b3bee 100644
--- a/src/plugins/evolution/tracker-evolution-plugin.c
+++ b/src/plugins/evolution/tracker-evolution-plugin.c
@@ -2492,7 +2492,7 @@ miner_start_watching (TrackerMiner *miner)
 {
        TrackerMinerEvolutionPrivate *priv = TRACKER_MINER_EVOLUTION_GET_PRIVATE (miner);
 
-       priv->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
+       priv->watch_name_id = g_bus_watch_name (TRACKER_BUS_TYPE,
                                                TRACKER_SERVICE,
                                                G_BUS_NAME_WATCHER_FLAGS_NONE,
                                                on_tracker_store_appeared,
diff --git a/src/tracker-control/tracker-control-general.c b/src/tracker-control/tracker-control-general.c
index 7304c77..afabf10 100644
--- a/src/tracker-control/tracker-control-general.c
+++ b/src/tracker-control/tracker-control-general.c
@@ -1262,7 +1262,7 @@ tracker_control_general_run (void)
                g_print ("%s\n", _("Backing up database"));
                g_print ("  %s\n", uri);
 
-               connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+               connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &error);
 
                if (!connection) {
                        g_critical ("Could not connect to the D-Bus session bus: %s",
@@ -1334,7 +1334,7 @@ tracker_control_general_run (void)
                g_print ("%s\n", _("Restoring database from backup"));
                g_print ("  %s\n", uri);
 
-               connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+               connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &error);
 
                if (!connection) {
                        g_critical ("Could not connect to the D-Bus session bus: %s",
diff --git a/src/tracker-control/tracker-control-status.c b/src/tracker-control/tracker-control-status.c
index bbf3227..ec56f3c 100644
--- a/src/tracker-control/tracker-control-status.c
+++ b/src/tracker-control/tracker-control-status.c
@@ -459,7 +459,7 @@ store_init (void)
                return TRUE;
        }
 
-       connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+       connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &error);
 
        if (!connection) {
                g_critical ("Could not connect to the D-Bus session bus, %s",
diff --git a/src/tracker-extract/tracker-extract-decorator.c b/src/tracker-extract/tracker-extract-decorator.c
index 439b828..12acdf1 100644
--- a/src/tracker-extract/tracker-extract-decorator.c
+++ b/src/tracker-extract/tracker-extract-decorator.c
@@ -556,7 +556,7 @@ tracker_extract_decorator_initable_init (GInitable     *initable,
        tracker_extract_dbus_priority_set_supported_rdf_types (priv->iface,
                                                               supported_classes);
 
-       conn = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, error);
+       conn = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, error);
        if (conn == NULL) {
                ret = FALSE;
                goto out;
diff --git a/src/tracker-writeback/tracker-writeback.c b/src/tracker-writeback/tracker-writeback.c
index 7435b0f..6c88338 100644
--- a/src/tracker-writeback/tracker-writeback.c
+++ b/src/tracker-writeback/tracker-writeback.c
@@ -728,7 +728,7 @@ tracker_controller_dbus_start (TrackerController   *controller,
                return FALSE;
        }
 
-       priv->d_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &err);
+       priv->d_connection = g_bus_get_sync (TRACKER_BUS_TYPE, NULL, &err);
 
        if (!priv->d_connection) {
                g_propagate_error (error, err);


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