[tracker] TrackerMinerManager: Add pause() and resume() methods.
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] TrackerMinerManager: Add pause() and resume() methods.
- Date: Mon, 7 Sep 2009 13:29:38 +0000 (UTC)
commit 33ddfb02fd0174158a7cf7de4d159337e49d629e
Author: Carlos Garnacho <carlos lanedo com>
Date: Mon Sep 7 15:08:39 2009 +0200
TrackerMinerManager: Add pause() and resume() methods.
src/libtracker-miner/tracker-miner-manager.c | 92 ++++++++++++++++++++++++++
src/libtracker-miner/tracker-miner-manager.h | 7 ++
2 files changed, 99 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-manager.c b/src/libtracker-miner/tracker-miner-manager.c
index 0ffc91c..285fcf4 100644
--- a/src/libtracker-miner/tracker-miner-manager.c
+++ b/src/libtracker-miner/tracker-miner-manager.c
@@ -27,6 +27,7 @@
#include "tracker-miner.h"
#include "tracker-miner-manager.h"
#include "tracker-marshal.h"
+#include "tracker-miner-client.h"
#define TRACKER_MINER_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_MINER_MANAGER, TrackerMinerManagerPrivate))
@@ -92,6 +93,26 @@ tracker_miner_manager_class_init (TrackerMinerManagerClass *klass)
g_type_class_add_private (object_class, sizeof (TrackerMinerManagerPrivate));
}
+static DBusGProxy *
+find_miner_proxy (TrackerMinerManager *manager,
+ const gchar *name)
+{
+ TrackerMinerManagerPrivate *priv;
+ GHashTableIter iter;
+ gpointer key, value;
+
+ priv = TRACKER_MINER_MANAGER_GET_PRIVATE (manager);
+ g_hash_table_iter_init (&iter, priv->miner_proxies);
+
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ if (g_strcmp0 (name, (gchar *) value) == 0) {
+ return key;
+ }
+ }
+
+ return NULL;
+}
+
static void
miner_progress_changed (DBusGProxy *proxy,
const gchar *status,
@@ -351,3 +372,74 @@ tracker_miner_manager_get_available (TrackerMinerManager *manager)
return g_slist_reverse (list);
}
+
+gboolean
+tracker_miner_manager_pause (TrackerMinerManager *manager,
+ const gchar *miner,
+ const gchar *reason,
+ guint32 *cookie)
+{
+ DBusGProxy *proxy;
+ const gchar *app_name;
+ GError *error = NULL;
+
+ g_return_val_if_fail (TRACKER_IS_MINER_MANAGER (manager), FALSE);
+ g_return_val_if_fail (miner != NULL, FALSE);
+ g_return_val_if_fail (reason != NULL, FALSE);
+
+ proxy = find_miner_proxy (manager, miner);
+
+ if (!proxy) {
+ g_critical ("No DBus proxy found for miner '%s'", miner);
+ return FALSE;
+ }
+
+ /* Find a reasonable app name */
+ app_name = g_get_application_name ();
+
+ if (!app_name) {
+ app_name = g_get_prgname ();
+ }
+
+ if (!app_name) {
+ app_name = "TrackerMinerManager client";
+ }
+
+ org_freedesktop_Tracker1_Miner_pause (proxy, app_name, reason, cookie, &error);
+
+ if (error) {
+ g_critical ("Could not pause miner '%s': %s", miner, error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+tracker_miner_manager_resume (TrackerMinerManager *manager,
+ const gchar *miner,
+ guint32 cookie)
+{
+ DBusGProxy *proxy;
+ GError *error = NULL;
+
+ g_return_val_if_fail (TRACKER_IS_MINER_MANAGER (manager), FALSE);
+ g_return_val_if_fail (miner != NULL, FALSE);
+ proxy = find_miner_proxy (manager, miner);
+
+ if (!proxy) {
+ g_critical ("No DBus proxy found for miner '%s'", miner);
+ return FALSE;
+ }
+
+ org_freedesktop_Tracker1_Miner_resume (proxy, cookie, &error);
+
+ if (error) {
+ g_critical ("Could not resume miner '%s': %s", miner, error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/src/libtracker-miner/tracker-miner-manager.h b/src/libtracker-miner/tracker-miner-manager.h
index 2ed533e..788f5c9 100644
--- a/src/libtracker-miner/tracker-miner-manager.h
+++ b/src/libtracker-miner/tracker-miner-manager.h
@@ -59,6 +59,13 @@ TrackerMinerManager * tracker_miner_manager_new (void);
GSList *tracker_miner_manager_get_running (TrackerMinerManager *manager);
GSList *tracker_miner_manager_get_available (TrackerMinerManager *manager);
+gboolean tracker_miner_manager_pause (TrackerMinerManager *manager,
+ const gchar *miner,
+ const gchar *reason,
+ guint32 *cookie);
+gboolean tracker_miner_manager_resume (TrackerMinerManager *manager,
+ const gchar *miner,
+ guint32 cookie);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]