[tracker] tracker-control: Avoid using duplicate code to get dbus connection/proxy
- From: Martyn James Russell <mr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] tracker-control: Avoid using duplicate code to get dbus connection/proxy
- Date: Wed, 23 Apr 2014 12:27:19 +0000 (UTC)
commit 5e72dce640890ce73e360c953997c5650afec1c8
Author: Martyn Russell <martyn lanedo com>
Date: Wed Apr 23 11:33:33 2014 +0100
tracker-control: Avoid using duplicate code to get dbus connection/proxy
src/tracker-control/tracker-control-general.c | 80 ++++++-------------------
src/tracker-control/tracker-control-status.c | 72 +++++++----------------
src/tracker-control/tracker-control.c | 43 +++++++++++++
src/tracker-control/tracker-control.h | 7 ++
4 files changed, 89 insertions(+), 113 deletions(-)
---
diff --git a/src/tracker-control/tracker-control-general.c b/src/tracker-control/tracker-control-general.c
index 315fa91..fc6aa91 100644
--- a/src/tracker-control/tracker-control-general.c
+++ b/src/tracker-control/tracker-control-general.c
@@ -1264,41 +1264,19 @@ tracker_control_general_run (void)
GVariant *v;
gchar *uri;
- uri = get_uri_from_arg (backup);
-
- g_print ("%s\n", _("Backing up database"));
- g_print (" %s\n", uri);
-
- connection = g_bus_get_sync (TRACKER_IPC_BUS, NULL, &error);
-
- if (!connection) {
- g_critical ("%s, %s",
- _("Could not get D-Bus connection"),
- error ? error->message : _("No error given"));
- g_clear_error (&error);
- g_free (uri);
-
+ if (!tracker_control_dbus_get_connection ("org.freedesktop.Tracker1",
+ "/org/freedesktop/Tracker1/Backup",
+ "org.freedesktop.Tracker1.Backup",
+ G_DBUS_PROXY_FLAGS_NONE,
+ &connection,
+ &proxy)) {
return EXIT_FAILURE;
}
- proxy = g_dbus_proxy_new_sync (connection,
- G_DBUS_PROXY_FLAGS_NONE,
- NULL,
- "org.freedesktop.Tracker1",
- "/org/freedesktop/Tracker1/Backup",
- "org.freedesktop.Tracker1.Backup",
- NULL,
- &error);
-
- if (error) {
- g_critical ("%s, %s",
- _("Could not create D-Bus proxy to tracker-store"),
- error ? error->message : _("No error given"));
- g_clear_error (&error);
- g_free (uri);
+ uri = get_uri_from_arg (backup);
- return EXIT_FAILURE;
- }
+ g_print ("%s\n", _("Backing up database"));
+ g_print (" %s\n", uri);
/* Backup/Restore can take some time */
g_dbus_proxy_set_default_timeout (proxy, G_MAXINT);
@@ -1339,41 +1317,19 @@ tracker_control_general_run (void)
GVariant *v;
gchar *uri;
- uri = get_uri_from_arg (restore);
-
- g_print ("%s\n", _("Restoring database from backup"));
- g_print (" %s\n", uri);
-
- connection = g_bus_get_sync (TRACKER_IPC_BUS, NULL, &error);
-
- if (!connection) {
- g_critical ("%s, %s",
- _("Could not get D-Bus connection"),
- error ? error->message : _("No error given"));
- g_clear_error (&error);
- g_free (uri);
-
+ if (!tracker_control_dbus_get_connection ("org.freedesktop.Tracker1",
+ "/org/freedesktop/Tracker1/Backup",
+ "org.freedesktop.Tracker1.Backup",
+ G_DBUS_PROXY_FLAGS_NONE,
+ &connection,
+ &proxy)) {
return EXIT_FAILURE;
}
- proxy = g_dbus_proxy_new_sync (connection,
- G_DBUS_PROXY_FLAGS_NONE,
- NULL,
- "org.freedesktop.Tracker1",
- "/org/freedesktop/Tracker1/Backup",
- "org.freedesktop.Tracker1.Backup",
- NULL,
- &error);
-
- if (error) {
- g_critical ("%s, %s",
- _("Could not create D-Bus proxy to tracker-store"),
- error ? error->message : _("No error given"));
- g_clear_error (&error);
- g_free (uri);
+ uri = get_uri_from_arg (restore);
- return EXIT_FAILURE;
- }
+ g_print ("%s\n", _("Restoring database from backup"));
+ g_print (" %s\n", uri);
/* Backup/Restore can take some time */
g_dbus_proxy_set_default_timeout (proxy, G_MAXINT);
diff --git a/src/tracker-control/tracker-control-status.c b/src/tracker-control/tracker-control-status.c
index 94a1290..4e12b37 100644
--- a/src/tracker-control/tracker-control-status.c
+++ b/src/tracker-control/tracker-control-status.c
@@ -452,56 +452,6 @@ store_progress (GDBusConnection *connection,
store_print_state (status, progress);
}
-static gboolean
-store_init (void)
-{
- GError *error = NULL;
-
- if (connection && proxy) {
- return TRUE;
- }
-
- connection = g_bus_get_sync (TRACKER_IPC_BUS, NULL, &error);
-
- if (!connection) {
- g_critical ("%s, %s",
- _("Could not get D-Bus connection"),
- error ? error->message : _("No error given"));
- g_clear_error (&error);
- return FALSE;
- }
-
- proxy = g_dbus_proxy_new_sync (connection,
- G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
- NULL,
- "org.freedesktop.Tracker1",
- "/org/freedesktop/Tracker1/Status",
- "org.freedesktop.Tracker1.Status",
- NULL,
- &error);
-
- if (error) {
- g_critical ("%s, %s",
- _("Could not create D-Bus proxy to tracker-store"),
- error ? error->message : _("No error given"));
- g_clear_error (&error);
- return FALSE;
- }
-
- g_dbus_connection_signal_subscribe (connection,
- "org.freedesktop.Tracker1",
- "org.freedesktop.Tracker1.Status",
- "Progress",
- "/org/freedesktop/Tracker1/Status",
- NULL,
- G_DBUS_SIGNAL_FLAGS_NONE,
- store_progress,
- NULL,
- NULL);
-
- return TRUE;
-}
-
void
tracker_control_status_run_default (void)
{
@@ -564,7 +514,27 @@ tracker_control_status_run (void)
/* Display states */
g_print ("%s:\n", _("Store"));
- store_init ();
+
+ if (!tracker_control_dbus_get_connection ("org.freedesktop.Tracker1",
+ "/org/freedesktop/Tracker1/Status",
+ "org.freedesktop.Tracker1.Status",
+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
+ &connection,
+ &proxy)) {
+ return EXIT_FAILURE;
+ }
+
+ g_dbus_connection_signal_subscribe (connection,
+ "org.freedesktop.Tracker1",
+ "org.freedesktop.Tracker1.Status",
+ "Progress",
+ "/org/freedesktop/Tracker1/Status",
+ NULL,
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ store_progress,
+ NULL,
+ NULL);
+
store_get_and_print_state ();
g_print ("\n");
diff --git a/src/tracker-control/tracker-control.c b/src/tracker-control/tracker-control.c
index fc76b8b..296913a 100644
--- a/src/tracker-control/tracker-control.c
+++ b/src/tracker-control/tracker-control.c
@@ -31,6 +31,7 @@
#include <glib/gi18n.h>
#include <glib/gprintf.h>
#include <glib/gstdio.h>
+#include <gio/gio.h>
#include <libtracker-common/tracker-common.h>
@@ -55,6 +56,48 @@ static GOptionEntry common_entries[] = {
{ NULL }
};
+gboolean
+tracker_control_dbus_get_connection (const gchar *name,
+ const gchar *object_path,
+ const gchar *interface_name,
+ GDBusProxyFlags flags,
+ GDBusConnection **connection,
+ GDBusProxy **proxy)
+{
+ GError *error = NULL;
+
+ *connection = g_bus_get_sync (TRACKER_IPC_BUS, NULL, &error);
+
+ if (!*connection) {
+ g_critical ("%s, %s",
+ _("Could not get D-Bus connection"),
+ error ? error->message : _("No error given"));
+ g_clear_error (&error);
+
+ return FALSE;
+ }
+
+ *proxy = g_dbus_proxy_new_sync (*connection,
+ flags,
+ NULL,
+ name,
+ object_path,
+ interface_name,
+ NULL,
+ &error);
+
+ if (error) {
+ g_critical ("%s, %s",
+ _("Could not create D-Bus proxy to tracker-store"),
+ error ? error->message : _("No error given"));
+ g_clear_error (&error);
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
int
main (int argc, char **argv)
{
diff --git a/src/tracker-control/tracker-control.h b/src/tracker-control/tracker-control.h
index dc33d4c..2ced685 100644
--- a/src/tracker-control/tracker-control.h
+++ b/src/tracker-control/tracker-control.h
@@ -22,6 +22,13 @@
#ifndef __TRACKER_CONTROL_H__
#define __TRACKER_CONTROL_H__
+gboolean tracker_control_dbus_get_connection (const gchar *name,
+ const gchar *object_path,
+ const gchar *interface_name,
+ GDBusProxyFlags flags,
+ GDBusConnection **connection,
+ GDBusProxy **proxy);
+
GOptionGroup *tracker_control_general_get_option_group (void);
gint tracker_control_general_run (void);
void tracker_control_general_run_default (void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]