tracker r1870 - in branches/indexer-split: . data/dbus src/tracker-indexer
- From: mr svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1870 - in branches/indexer-split: . data/dbus src/tracker-indexer
- Date: Mon, 14 Jul 2008 10:24:35 +0000 (UTC)
Author: mr
Date: Mon Jul 14 10:24:34 2008
New Revision: 1870
URL: http://svn.gnome.org/viewvc/tracker?rev=1870&view=rev
Log:
* data/dbus/tracker-indexer.xml:
* src/tracker-indexer/tracker-indexer.[ch]:
* src/tracker-indexer/tracker-main.c: Commit patch from Ivan to
make the indexer DBus API completely asynchronous.
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/data/dbus/tracker-indexer.xml
branches/indexer-split/src/tracker-indexer/tracker-indexer.c
branches/indexer-split/src/tracker-indexer/tracker-indexer.h
branches/indexer-split/src/tracker-indexer/tracker-main.c
Modified: branches/indexer-split/data/dbus/tracker-indexer.xml
==============================================================================
--- branches/indexer-split/data/dbus/tracker-indexer.xml (original)
+++ branches/indexer-split/data/dbus/tracker-indexer.xml Mon Jul 14 10:24:34 2008
@@ -11,21 +11,26 @@
<node name="/">
<interface name="org.freedesktop.Tracker.Indexer">
<method name="GetRunning">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="b" name="is_running" direction="out" />
</method>
<method name="SetRunning">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="b" name="should_be_running" direction="in" />
</method>
<method name="FilesCheck">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="s" name="module" direction="in" />
<arg type="as" name="files" direction="in" />
</method>
<method name="FilesUpdate">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="s" name="module" direction="in" />
<arg type="as" name="files" direction="in" />
</method>
<method name="FilesDelete">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="s" name="module" direction="in" />
<arg type="as" name="files" direction="in" />
</method>
Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.c (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.c Mon Jul 14 10:24:34 2008
@@ -362,9 +362,8 @@
switch (prop_id) {
case PROP_RUNNING:
- tracker_indexer_set_running (indexer,
- g_value_get_boolean (value),
- NULL);
+ tracker_indexer_set_is_running (indexer,
+ g_value_get_boolean (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -504,7 +503,7 @@
priv->timer = g_timer_new ();
- tracker_indexer_set_running (indexer, TRUE, NULL);
+ tracker_indexer_set_is_running (indexer, TRUE);
g_free (index_file);
}
@@ -834,23 +833,27 @@
}
gboolean
-tracker_indexer_set_running (TrackerIndexer *indexer,
- gboolean should_be_running,
- GError **error)
+tracker_indexer_get_is_running (TrackerIndexer *indexer)
{
TrackerIndexerPrivate *priv;
- guint request_id;
- gboolean changed = FALSE;
- request_id = tracker_dbus_get_next_request_id ();
-
- tracker_dbus_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE, error);
+ g_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
- tracker_dbus_request_new (request_id,
- "DBus request to %s indexer",
- should_be_running ? "start" : "stop");
+ return priv->idle_id != 0;
+}
+
+void
+tracker_indexer_set_is_running (TrackerIndexer *indexer,
+ gboolean should_be_running)
+{
+ TrackerIndexerPrivate *priv;
+ gboolean changed = FALSE;
+
+ g_return_if_fail (TRACKER_IS_INDEXER (indexer));
+
+ priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
if (should_be_running && priv->idle_id == 0) {
priv->idle_id = g_idle_add ((GSourceFunc) indexing_func, indexer);
@@ -864,35 +867,56 @@
if (changed) {
g_object_notify (G_OBJECT (indexer), "running");
}
+}
- tracker_dbus_request_success (request_id);
+void
+tracker_indexer_set_running (TrackerIndexer *indexer,
+ gboolean should_be_running,
+ DBusGMethodInvocation *context,
+ GError **error)
+{
- return TRUE;
+ guint request_id;
+
+ request_id = tracker_dbus_get_next_request_id ();
+
+ tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
+
+ tracker_dbus_request_new (request_id,
+ "DBus request to %s indexer",
+ should_be_running ? "start" : "stop");
+
+
+ tracker_indexer_set_is_running (indexer, should_be_running);
+
+ dbus_g_method_return (context);
+
+ tracker_dbus_request_success (request_id);
}
-gboolean
-tracker_indexer_get_running (TrackerIndexer *indexer,
- gboolean *is_running,
- GError **error)
+void
+tracker_indexer_get_running (TrackerIndexer *indexer,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerIndexerPrivate *priv;
guint request_id;
+ gboolean is_running;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE, error);
- tracker_dbus_return_val_if_fail (is_running != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
tracker_dbus_request_new (request_id,
"DBus request to get running status");
- *is_running = priv->idle_id != 0;
+ is_running = tracker_indexer_get_is_running (indexer);
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, is_running);
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
void
@@ -908,19 +932,21 @@
}
}
-gboolean
-tracker_indexer_files_check (TrackerIndexer *indexer,
- const gchar *module_name,
- GStrv files,
- GError **error)
+void
+tracker_indexer_files_check (TrackerIndexer *indexer,
+ const gchar *module_name,
+ GStrv files,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerIndexerPrivate *priv;
GModule *module;
guint request_id;
gint i;
+ GError *actual_error = NULL;
- tracker_dbus_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE, error);
- tracker_dbus_return_val_if_fail (files != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
+ tracker_dbus_async_return_if_fail (files != NULL, FALSE);
priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
request_id = tracker_dbus_get_next_request_id ();
@@ -931,40 +957,45 @@
module = g_hash_table_lookup (priv->indexer_modules, module_name);
- if (!module) {
+ if (module) {
+ /* Add files to the queue */
+ for (i = 0; files[i]; i++) {
+ PathInfo *info;
+
+ info = path_info_new (module, files[i]);
+ tracker_indexer_add_file (indexer, info);
+ }
+ } else {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"The module '%s' is not loaded",
module_name);
- return FALSE;
}
- /* Add files to the queue */
- for (i = 0; files[i]; i++) {
- PathInfo *info;
-
- info = path_info_new (module, files[i]);
- tracker_indexer_add_file (indexer, info);
+ if (!actual_error) {
+ dbus_g_method_return (context);
+ tracker_dbus_request_success (request_id);
+ } else {
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
}
-
- tracker_dbus_request_success (request_id);
-
- return TRUE;
}
-gboolean
-tracker_indexer_files_update (TrackerIndexer *indexer,
- const gchar *module_name,
- GStrv files,
- GError **error)
+void
+tracker_indexer_files_update (TrackerIndexer *indexer,
+ const gchar *module_name,
+ GStrv files,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerIndexerPrivate *priv;
GModule *module;
guint request_id;
gint i;
+ GError *actual_error = NULL;
- tracker_dbus_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE, error);
- tracker_dbus_return_val_if_fail (files != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
+ tracker_dbus_async_return_if_fail (files != NULL, FALSE);
priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
request_id = tracker_dbus_get_next_request_id ();
@@ -975,40 +1006,45 @@
module = g_hash_table_lookup (priv->indexer_modules, module_name);
- if (!module) {
+ if (module) {
+ /* Add files to the queue */
+ for (i = 0; files[i]; i++) {
+ PathInfo *info;
+
+ info = path_info_new (module, files[i]);
+ tracker_indexer_add_file (indexer, info);
+ }
+ } else {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"The module '%s' is not loaded",
module_name);
- return FALSE;
}
- /* Add files to the queue */
- for (i = 0; files[i]; i++) {
- PathInfo *info;
-
- info = path_info_new (module, files[i]);
- tracker_indexer_add_file (indexer, info);
+ if (!actual_error) {
+ dbus_g_method_return (context);
+ tracker_dbus_request_success (request_id);
+ } else {
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
}
-
- tracker_dbus_request_success (request_id);
-
- return TRUE;
}
-gboolean
-tracker_indexer_files_delete (TrackerIndexer *indexer,
- const gchar *module_name,
- GStrv files,
- GError **error)
+void
+tracker_indexer_files_delete (TrackerIndexer *indexer,
+ const gchar *module_name,
+ GStrv files,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerIndexerPrivate *priv;
GModule *module;
guint request_id;
gint i;
+ GError *actual_error = NULL;
- tracker_dbus_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE, error);
- tracker_dbus_return_val_if_fail (files != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
+ tracker_dbus_async_return_if_fail (files != NULL, FALSE);
priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
request_id = tracker_dbus_get_next_request_id ();
@@ -1019,24 +1055,28 @@
module = g_hash_table_lookup (priv->indexer_modules, module_name);
- if (!module) {
+ if (module) {
+ /* Add files to the queue */
+ for (i = 0; files[i]; i++) {
+ PathInfo *info;
+
+ info = path_info_new (module, files[i]);
+ tracker_indexer_add_file (indexer, info);
+ }
+
+ } else {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"The module '%s' is not loaded",
module_name);
- return FALSE;
}
- /* Add files to the queue */
- for (i = 0; files[i]; i++) {
- PathInfo *info;
-
- info = path_info_new (module, files[i]);
- tracker_indexer_add_file (indexer, info);
+ if (!actual_error) {
+ dbus_g_method_return (context);
+ tracker_dbus_request_success (request_id);
+ } else {
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
}
-
- tracker_dbus_request_success (request_id);
-
- return TRUE;
}
Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.h
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.h (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.h Mon Jul 14 10:24:34 2008
@@ -23,6 +23,7 @@
#define __TRACKER_INDEXER_H__
#include <glib-object.h>
+#include <dbus/dbus-glib.h>
#define TRACKER_INDEXER_SERVICE "org.freedesktop.Tracker.Indexer"
#define TRACKER_INDEXER_PATH "/org/freedesktop/Tracker/Indexer"
@@ -54,26 +55,40 @@
GType tracker_indexer_get_type (void) G_GNUC_CONST;
TrackerIndexer *tracker_indexer_new (void);
-gboolean tracker_indexer_set_running (TrackerIndexer *indexer,
- gboolean should_be_running,
- GError **error);
-gboolean tracker_indexer_get_running (TrackerIndexer *indexer,
- gboolean *is_running,
- GError **error);
-void tracker_indexer_process_all (TrackerIndexer *indexer);
-gboolean tracker_indexer_files_check (TrackerIndexer *indexer,
- const gchar *module,
- GStrv files,
- GError **error);
-gboolean tracker_indexer_files_update (TrackerIndexer *indexer,
- const gchar *module,
- GStrv files,
- GError **error);
-gboolean tracker_indexer_files_delete (TrackerIndexer *indexer,
- const gchar *module,
- GStrv files,
- GError **error);
-void tracker_indexer_process_all (TrackerIndexer *indexer);
+
+/* GObject methods */
+gboolean tracker_indexer_get_is_running (TrackerIndexer *indexer);
+void tracker_indexer_set_is_running (TrackerIndexer *indexer,
+ gboolean is_running);
+
+
+/* DBus methods */
+void tracker_indexer_set_running (TrackerIndexer *indexer,
+ gboolean should_be_running,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_indexer_get_running (TrackerIndexer *indexer,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_indexer_process_all (TrackerIndexer *indexer);
+void tracker_indexer_files_check (TrackerIndexer *indexer,
+ const gchar *module,
+ GStrv files,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_indexer_files_update (TrackerIndexer *indexer,
+ const gchar *module,
+ GStrv files,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_indexer_files_delete (TrackerIndexer *indexer,
+ const gchar *module,
+ GStrv files,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_indexer_process_all (TrackerIndexer *indexer);
+
+
G_END_DECLS
Modified: branches/indexer-split/src/tracker-indexer/tracker-main.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-main.c (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-main.c Mon Jul 14 10:24:34 2008
@@ -184,11 +184,10 @@
quit_timeout_cb (gpointer user_data)
{
TrackerIndexer *indexer;
- gboolean running = FALSE;
indexer = TRACKER_INDEXER (user_data);
- if (!tracker_indexer_get_running (indexer, &running, NULL) || !running) {
+ if (!tracker_indexer_get_is_running (indexer)) {
g_message ("Indexer is still not running after %d seconds, quitting...",
QUIT_TIMEOUT);
g_main_loop_quit (main_loop);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]