tracker r1883 - in branches/indexer-split: . data/dbus src/trackerd
- From: ifrade svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1883 - in branches/indexer-split: . data/dbus src/trackerd
- Date: Thu, 17 Jul 2008 14:45:49 +0000 (UTC)
Author: ifrade
Date: Thu Jul 17 14:45:49 2008
New Revision: 1883
URL: http://svn.gnome.org/viewvc/tracker?rev=1883&view=rev
Log:
files api async
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/data/dbus/tracker-files.xml
branches/indexer-split/src/trackerd/tracker-files.c
branches/indexer-split/src/trackerd/tracker-files.h
Modified: branches/indexer-split/data/dbus/tracker-files.xml
==============================================================================
--- branches/indexer-split/data/dbus/tracker-files.xml (original)
+++ branches/indexer-split/data/dbus/tracker-files.xml Thu Jul 17 14:45:49 2008
@@ -8,6 +8,7 @@
database if not already present.
-->
<method name="Exist">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="s" name="uri" direction="in" />
<arg type="b" name="auto_create" direction="in" />
<arg type="b" name="result" direction="out" />
@@ -19,6 +20,7 @@
outside the watch/crawl path.
-->
<method name="Create">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="s" name="uri" direction="in" />
<arg type="b" name="is_directory" direction="in" />
<arg type="s" name="mime" direction="in" />
@@ -28,30 +30,34 @@
<!-- Removes the file entry from tracker's database. -->
<method name="Delete">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="s" name="uri" direction="in" />
</method>
<!-- Get the Service subtype for the file. -->
<method name="GetServiceType">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="s" name="uri" direction="in" />
- <arg type="s" name="result" direction="out" />
+ <arg type="s" name="service_type" direction="out" />
</method>
<!-- Get the "File.Content" field for a file and allows you to
specify the offset and amount of text to retrieve.
-->
<method name="GetTextContents">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
<arg type="s" name="uri" direction="in" />
<arg type="i" name="offset" direction="in" />
<arg type="i" name="max_length" direction="in" />
- <arg type="s" name="result" direction="out" />
+ <arg type="s" name="content" direction="out" />
</method>
<!-- Retrieves a chunk of matching text of specified length that
contains the search text in the File.Content field.
-->
<method name="SearchTextContents">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
<arg type="s" name="uri" direction="in" />
<arg type="s" name="text" direction="in" />
@@ -61,6 +67,7 @@
<!-- Retrieves all files that match a service description. -->
<method name="GetByServiceType">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="i" name="live_query_id" direction="in" />
<arg type="s" name="file_service" direction="in" />
<arg type="i" name="offset" direction="in" />
@@ -70,6 +77,7 @@
<!-- Retrieves all non-vfs files of the specified mime type(s). -->
<method name="GetByMimeType">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="i" name="live_query_id" direction="in" />
<arg type="as" name="mime_types" direction="in" />
<arg type="i" name="offset" direction="in" />
@@ -79,6 +87,7 @@
<!-- Retrieves all vfs files of the specified mime type(s). -->
<method name="GetByMimeTypeVfs">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="i" name="live_query_id" direction="in" />
<arg type="as" name="mime_types" direction="in" />
<arg type="i" name="offset" direction="in" />
@@ -88,6 +97,7 @@
<!-- returns mtime of file in seconds since epoch -->
<method name="GetMTime">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
<arg type="s" name="uri" direction="in" />
<arg type="i" name="result" direction="out" />
@@ -98,6 +108,7 @@
field1, field2...].
-->
<method name="GetMetadataForFilesInFolder">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<arg type="i" name="live_query_id" direction="in" />
<arg type="s" name="uri" direction="in" />
<arg type="as" name="fields" direction="in" />
@@ -106,18 +117,21 @@
<!-- Specific calls for Nautilus, mostly used by Nautilus search. -->
<method name="SearchByTextAndMime">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
<arg type="s" name="text" direction="in" />
<arg type="as" name="mimes" direction="in" />
<arg type="as" name="result" direction="out" />
</method>
<method name="SearchByTextAndLocation">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
<arg type="s" name="text" direction="in" />
<arg type="s" name="location" direction="in" />
<arg type="as" name="result" direction="out" />
</method>
<method name="SearchByTextAndMimeAndLocation">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
<annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
<arg type="s" name="text" direction="in" />
<arg type="as" name="mimes" direction="in" />
Modified: branches/indexer-split/src/trackerd/tracker-files.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-files.c (original)
+++ branches/indexer-split/src/trackerd/tracker-files.c Thu Jul 17 14:45:49 2008
@@ -60,12 +60,12 @@
/*
* Functions
*/
-gboolean
-tracker_files_exist (TrackerFiles *object,
- const gchar *uri,
- gboolean auto_create,
- gboolean *value,
- GError **error)
+void
+tracker_files_exist (TrackerFiles *object,
+ const gchar *uri,
+ gboolean auto_create,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
guint request_id;
@@ -74,13 +74,12 @@
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (value != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to see if files exist, "
- "uri:'%s'",
- uri);
+ "uri:'%s' auto-create:'%d'",
+ uri, auto_create);
iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
@@ -95,6 +94,7 @@
if (!tracker_file_is_valid (uri)) {
info->mime = g_strdup ("unknown");
+ /* FIXME Shouldn't it be "other"? */
service = g_strdup ("Files");
} else {
info->mime = tracker_file_get_mime_type (uri);
@@ -102,26 +102,25 @@
info = tracker_db_file_info_get (info);
}
- tracker_db_service_create (iface, "Files", info);
+ tracker_db_service_create (iface, service, info);
tracker_db_file_info_free (info);
g_free (service);
}
- *value = exists;
-
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, exists);
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
-gboolean
-tracker_files_create (TrackerFiles *object,
- const gchar *uri,
- gboolean is_directory,
- const gchar *mime,
- gint size,
- gint mtime,
- GError **error)
+void
+tracker_files_create (TrackerFiles *object,
+ const gchar *uri,
+ gboolean is_directory,
+ const gchar *mime,
+ gint size,
+ gint mtime,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
TrackerDBFileInfo *info;
@@ -134,10 +133,10 @@
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (mime != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (size >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (mtime >= 0, FALSE, error);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (mime != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (size >= 0, FALSE);
+ tracker_dbus_async_return_if_fail (mtime >= 0, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to create file, "
@@ -221,7 +220,6 @@
g_free (mtime_str);
g_free (file_id_str);
- tracker_dbus_request_success (request_id);
} else {
tracker_dbus_request_comment (request_id,
"File/directory was already in the database, uri:'%s'",
@@ -232,7 +230,9 @@
g_free (name);
g_free (service);
- return created;
+ dbus_g_method_return (context);
+
+ tracker_dbus_request_success (request_id);
}
static void
@@ -242,24 +242,28 @@
g_strfreev (files);
}
-gboolean
-tracker_files_delete (TrackerFiles *object,
- const gchar *uri,
- GError **error)
+void
+tracker_files_delete (TrackerFiles *object,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
- TrackerDBResultSet *result_set;
guint request_id;
guint32 file_id;
gchar *full;
gchar *path;
gchar *name;
- gboolean is_directory;
GStrv files;
-
+
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
+
+ tracker_dbus_request_new (request_id,
+ "DBus request to delete file, "
+ "uri:'%s'",
+ uri);
iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
@@ -268,9 +272,10 @@
tracker_dbus_request_comment (request_id,
"File or directory was not in database to delete, uri:'%s'",
uri);
-
+
+ dbus_g_method_return (context);
tracker_dbus_request_success (request_id);
- return TRUE;
+ return;
}
if (uri[0] == G_DIR_SEPARATOR) {
@@ -283,31 +288,11 @@
full = g_build_filename (G_DIR_SEPARATOR_S, path, name, NULL);
}
- is_directory = FALSE;
-
- result_set = tracker_db_exec_proc (iface,
- "GetServiceID",
- path,
- name,
- NULL);
- g_free (name);
- g_free (path);
-
- if (result_set) {
- tracker_db_result_set_get (result_set, 2, &is_directory, -1);
- g_object_unref (result_set);
- }
-
files = (GStrv) g_malloc0 (sizeof (gchar*) * 1);
/* full is freed as part of the GStrv in the callback */
files[0] = full;
- tracker_dbus_request_new (request_id,
- "DBus request to delete file, "
- "uri:'%s'",
- uri);
-
org_freedesktop_Tracker_Indexer_files_delete_async (tracker_dbus_indexer_get_proxy (),
"files",
(const char **) files,
@@ -319,28 +304,31 @@
* dbus_g_method_return_error or dbus_g_method_return in the callback
* on_indexer_deleted */
+ dbus_g_method_return (context);
+
tracker_dbus_request_success (request_id);
- return TRUE;
+ return;
}
-gboolean
-tracker_files_get_service_type (TrackerFiles *object,
- const gchar *uri,
- gchar **value,
- GError **error)
+void
+tracker_files_get_service_type (TrackerFiles *object,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
TrackerDBResultSet *result_set;
guint request_id;
guint32 file_id;
gchar *file_id_str;
+ gchar *value = NULL;
const gchar *mime = NULL;
+ GError *actual_error = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (value != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to get service type ",
@@ -349,14 +337,18 @@
iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
+ /* FIXME why dont obtain the service type directly from the DB??? */
+
file_id = tracker_db_file_get_id (iface, uri);
if (file_id < 1) {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"File '%s' was not found in the database",
uri);
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ return;
}
/* Get mime */
@@ -376,39 +368,49 @@
if (!mime) {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"Metadata 'File:Mime' for '%s' doesn't exist",
uri);
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ return;
}
- tracker_dbus_request_comment (request_id,
- "Metadata 'File:Mime' is '%s'",
- mime);
-
/* Get service from mime */
- *value = tracker_ontology_get_service_type_for_mime (mime);
+ value = tracker_ontology_get_service_type_for_mime (mime);
- tracker_dbus_request_comment (request_id,
- "Info for file '%s', "
- "id:%d, mime:'%s', service:'%s'",
- uri,
- file_id,
- mime,
- *value);
+ if (value) {
- tracker_dbus_request_success (request_id);
+ tracker_dbus_request_comment (request_id,
+ "Info for file '%s', "
+ "id:%d, mime:'%s', service:'%s'",
+ uri,
+ file_id,
+ mime,
+ value);
+ dbus_g_method_return (context, value);
+ g_free (value);
+
+ tracker_dbus_request_success (request_id);
+ } else {
+
+ tracker_dbus_request_failed (request_id,
+ &actual_error,
+ "Unable to find service to mime '%s'",
+ mime);
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ }
- return TRUE;
}
-gboolean
-tracker_files_get_text_contents (TrackerFiles *object,
- const gchar *uri,
- gint offset,
- gint max_length,
- gchar **value,
- GError **error)
+void
+tracker_files_get_text_contents (TrackerFiles *object,
+ const gchar *uri,
+ gint offset,
+ gint max_length,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
TrackerDBResultSet *result_set;
@@ -416,13 +418,15 @@
gchar *service_id;
gchar *offset_str;
gchar *max_length_str;
-
+ gchar *value;
+ GError *actual_error = NULL;
+
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (offset >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (max_length >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (value != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (offset >= 0, FALSE);
+ tracker_dbus_async_return_if_fail (max_length >= 0, FALSE);
+ tracker_dbus_async_return_if_fail (value != NULL, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to get text contents, "
@@ -433,16 +437,20 @@
iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
+
+ /* FIXME iface is already for "Files". Makes no sense to try Files and Emails */
service_id = tracker_db_file_get_id_as_string (iface, "Files", uri);
if (!service_id) {
service_id = tracker_db_file_get_id_as_string (iface, "Emails", uri);
if (!service_id) {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"Unable to retrieve service ID for uri '%s'",
uri);
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ return;
}
}
@@ -461,32 +469,36 @@
g_free (service_id);
if (result_set) {
- tracker_db_result_set_get (result_set, 0, value, -1);
+ tracker_db_result_set_get (result_set, 0, &value, -1);
g_object_unref (result_set);
- if (*value == NULL) {
- *value = g_strdup ("");
+ if (value == NULL) {
+ value = g_strdup ("");
}
+
+ dbus_g_method_return (context, value);
+ g_free (value);
+
+ tracker_dbus_request_success (request_id);
+
} else {
+
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"The contents of the uri '%s' are not stored",
uri);
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
}
-
- tracker_dbus_request_success (request_id);
-
- return TRUE;
}
-gboolean
-tracker_files_search_text_contents (TrackerFiles *object,
- const gchar *uri,
- const gchar *text,
- gint max_length,
- gchar **value,
- GError **error)
+void
+tracker_files_search_text_contents (TrackerFiles *object,
+ const gchar *uri,
+ const gchar *text,
+ gint max_length,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
TrackerDBResultSet *result_set = NULL;
@@ -494,12 +506,14 @@
gchar *name;
gchar *path;
gchar *max_length_str;
+ gchar *value = NULL;
+ GError *actual_error = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (text != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (value != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (text != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (max_length >= 0, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to search text contents, "
@@ -537,39 +551,40 @@
tracker_db_result_set_get (result_set, 0, value, -1);
g_object_unref (result_set);
} else {
- *value = g_strdup ("");
+ value = g_strdup ("");
}
/* Fixme: when this is implemented, we should return TRUE and
* change this function to the success variant.
*/
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"%s not implemented yet",
__PRETTY_FUNCTION__);
-
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
}
-gboolean
-tracker_files_get_by_service_type (TrackerFiles *object,
- gint live_query_id,
- const gchar *service,
- gint offset,
- gint max_hits,
- gchar ***values,
- GError **error)
+void
+tracker_files_get_by_service_type (TrackerFiles *object,
+ gint live_query_id,
+ const gchar *service,
+ gint offset,
+ gint max_hits,
+ DBusGMethodInvocation *context,
+ GError **error)
{
- TrackerDBInterface *iface;
- TrackerDBResultSet *result_set;
- guint request_id;
+ TrackerDBInterface *iface;
+ TrackerDBResultSet *result_set;
+ guint request_id;
+ gchar **values = NULL;
+ GError *actual_error = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (service != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (offset >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (max_hits >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (service != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (offset >= 0, FALSE);
+ tracker_dbus_async_return_if_fail (max_hits >= 0, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to get files by service type, "
@@ -579,52 +594,57 @@
offset,
max_hits);
- iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
-
if (!tracker_ontology_is_valid_service_type (service)) {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"Service '%s' is invalid or has not been implemented yet",
service);
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ return;
}
-
+
+ iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
+
result_set = tracker_db_files_get_by_service (iface,
service,
offset,
max_hits);
- *values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
+ values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
if (result_set) {
g_object_unref (result_set);
}
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, values);
+ if (values) {
+ g_strfreev (values);
+ }
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
-gboolean
-tracker_files_get_by_mime_type (TrackerFiles *object,
- gint live_query_id,
- gchar **mime_types,
- gint offset,
- gint max_hits,
- gchar ***values,
- GError **error)
+void
+tracker_files_get_by_mime_type (TrackerFiles *object,
+ gint live_query_id,
+ gchar **mime_types,
+ gint offset,
+ gint max_hits,
+ DBusGMethodInvocation *context,
+ GError **error)
{
- TrackerDBInterface *iface;
- TrackerDBResultSet *result_set;
- guint request_id;
-
+ TrackerDBInterface *iface;
+ TrackerDBResultSet *result_set;
+ guint request_id;
+ gchar **values = NULL;
+
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (mime_types != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (g_strv_length (mime_types) > 0, FALSE, error);
- tracker_dbus_return_val_if_fail (offset >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (max_hits >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (mime_types != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (g_strv_length (mime_types) > 0, FALSE);
+ tracker_dbus_async_return_if_fail (offset >= 0, FALSE);
+ tracker_dbus_async_return_if_fail (max_hits >= 0, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to get files by mime types, "
@@ -643,37 +663,40 @@
max_hits,
FALSE);
- *values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
+ values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
if (result_set) {
g_object_unref (result_set);
}
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, values);
+ if (values) {
+ g_strfreev (values);
+ }
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
-gboolean
-tracker_files_get_by_mime_type_vfs (TrackerFiles *object,
- gint live_query_id,
- gchar **mime_types,
- gint offset,
- gint max_hits,
- gchar ***values,
- GError **error)
+void
+tracker_files_get_by_mime_type_vfs (TrackerFiles *object,
+ gint live_query_id,
+ gchar **mime_types,
+ gint offset,
+ gint max_hits,
+ DBusGMethodInvocation *context,
+ GError **error)
{
- TrackerDBInterface *iface;
- TrackerDBResultSet *result_set;
- guint request_id;
+ TrackerDBInterface *iface;
+ TrackerDBResultSet *result_set;
+ guint request_id;
+ gchar **values = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (mime_types != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (g_strv_length (mime_types) > 0, FALSE, error);
- tracker_dbus_return_val_if_fail (offset >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (max_hits >= 0, FALSE, error);
- tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (mime_types != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (g_strv_length (mime_types) > 0, FALSE);
+ tracker_dbus_async_return_if_fail (offset >= 0, FALSE);
+ tracker_dbus_async_return_if_fail (max_hits >= 0, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to get files by mime types (VFS), "
@@ -695,33 +718,37 @@
max_hits,
TRUE);
- *values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
+ values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
if (result_set) {
g_object_unref (result_set);
}
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, values);
+ if (values) {
+ g_strfreev (values);
+ }
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
-gboolean
-tracker_files_get_mtime (TrackerFiles *object,
- const gchar *uri,
- gint *value,
- GError **error)
+void
+tracker_files_get_mtime (TrackerFiles *object,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
TrackerDBResultSet *result_set;
guint request_id;
gchar *path;
gchar *name;
+ gint mtime;
+ GError *actual_error = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (value != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
tracker_dbus_request_new (request_id,
"DBus request for mtime, "
@@ -748,27 +775,29 @@
if (!result_set) {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"There is no file mtime in the database for '%s'",
uri);
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ return;
}
- tracker_db_result_set_get (result_set, 0, value, -1);
+ tracker_db_result_set_get (result_set, 0, &mtime, -1);
g_object_unref (result_set);
+ dbus_g_method_return (context, mtime);
+
tracker_dbus_request_success (request_id);
-
- return TRUE;
}
-gboolean
-tracker_files_get_metadata_for_files_in_folder (TrackerFiles *object,
- gint live_query_id,
- const gchar *uri,
- gchar **fields,
- GPtrArray **values,
- GError **error)
+void
+tracker_files_get_metadata_for_files_in_folder (TrackerFiles *object,
+ gint live_query_id,
+ const gchar *uri,
+ gchar **fields,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
TrackerDBResultSet *result_set;
@@ -780,13 +809,14 @@
GString *sql;
gboolean needs_join[255];
gchar *query;
+ GPtrArray *values;
+ GError *actual_error = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (fields != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (g_strv_length (fields) > 0, FALSE, error);
- tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (fields != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (g_strv_length (fields) > 0, FALSE);
tracker_dbus_request_new (request_id,
"DBus request for metadata for files in folder, "
@@ -803,10 +833,12 @@
if (!defs[i]) {
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"Metadata field '%s' was not found",
fields[i]);
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ return;
}
}
@@ -823,10 +855,12 @@
if (file_id == 0) {
g_free (uri_filtered);
tracker_dbus_request_failed (request_id,
- error,
+ &actual_error,
"File or directory was not in database, uri:'%s'",
uri);
- return FALSE;
+ dbus_g_method_return_error (context, actual_error);
+ g_error_free (actual_error);
+ return;
}
/* Build SELECT clause */
@@ -886,7 +920,7 @@
query = g_string_free (sql, FALSE);
result_set = tracker_db_interface_execute_query (iface, NULL, query);
- *values = tracker_dbus_query_result_to_ptr_array (result_set);
+ values = tracker_dbus_query_result_to_ptr_array (result_set);
if (result_set) {
g_object_unref (result_set);
@@ -894,28 +928,30 @@
g_free (query);
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, values);
+
+ tracker_dbus_results_ptr_array_free (&values);
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
-gboolean
-tracker_files_search_by_text_and_mime (TrackerFiles *object,
- const gchar *text,
- gchar **mime_types,
- gchar ***values,
- GError **error)
+void
+tracker_files_search_by_text_and_mime (TrackerFiles *object,
+ const gchar *text,
+ gchar **mime_types,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDBInterface *iface;
TrackerDBResultSet *result_set;
guint request_id;
+ gchar **values = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (text != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (mime_types != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (g_strv_length (mime_types) > 0, FALSE, error);
- tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (text != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (mime_types != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (g_strv_length (mime_types) > 0, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to search files by text & mime types, "
@@ -934,7 +970,7 @@
gint i = 0;
row_count = tracker_db_result_set_get_n_rows (result_set);
- *values = g_new0 (gchar *, row_count);
+ values = g_new0 (gchar *, row_count);
while (valid) {
tracker_db_result_set_get (result_set,
@@ -942,7 +978,7 @@
1, &name,
-1);
- *values[i++] = g_build_filename (prefix, name, NULL);
+ values[i++] = g_build_filename (prefix, name, NULL);
valid = tracker_db_result_set_iter_next (result_set);
g_free (prefix);
@@ -951,31 +987,33 @@
g_object_unref (result_set);
} else {
- *values = g_new0 (gchar *, 1);
- *values[0] = NULL;
+ values = g_new0 (gchar *, 1);
+ values[0] = NULL;
}
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, values);
+
+ g_strfreev (values);
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
-gboolean
-tracker_files_search_by_text_and_location (TrackerFiles *object,
- const gchar *text,
- const gchar *uri,
- gchar ***values,
- GError **error)
+void
+tracker_files_search_by_text_and_location (TrackerFiles *object,
+ const gchar *text,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error)
{
- TrackerDBInterface *iface;
- TrackerDBResultSet *result_set;
- guint request_id;
+ TrackerDBInterface *iface;
+ TrackerDBResultSet *result_set;
+ guint request_id;
+ gchar **values = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (text != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (text != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to search files by text & location, "
@@ -994,7 +1032,7 @@
gint i = 0;
row_count = tracker_db_result_set_get_n_rows (result_set);
- *values = g_new0 (gchar *, row_count);
+ values = g_new0 (gchar *, row_count);
while (valid) {
tracker_db_result_set_get (result_set,
@@ -1002,7 +1040,7 @@
1, &name,
-1);
- *values[i++] = g_build_filename (prefix, name, NULL);
+ values[i++] = g_build_filename (prefix, name, NULL);
valid = tracker_db_result_set_iter_next (result_set);
g_free (prefix);
@@ -1011,34 +1049,36 @@
g_object_unref (result_set);
} else {
- *values = g_new0 (gchar *, 1);
- *values[0] = NULL;
+ values = g_new0 (gchar *, 1);
+ values[0] = NULL;
}
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, values);
+
+ g_strfreev (values);
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
-gboolean
-tracker_files_search_by_text_and_mime_and_location (TrackerFiles *object,
- const gchar *text,
- gchar **mime_types,
- const gchar *uri,
- gchar ***values,
- GError **error)
+void
+tracker_files_search_by_text_and_mime_and_location (TrackerFiles *object,
+ const gchar *text,
+ gchar **mime_types,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error)
{
- TrackerDBInterface *iface;
- TrackerDBResultSet *result_set;
- guint request_id;
+ TrackerDBInterface *iface;
+ TrackerDBResultSet *result_set;
+ guint request_id;
+ gchar **values = NULL;
request_id = tracker_dbus_get_next_request_id ();
- tracker_dbus_return_val_if_fail (text != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (mime_types != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (g_strv_length (mime_types) > 0, FALSE, error);
- tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
+ tracker_dbus_async_return_if_fail (text != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (mime_types != NULL, FALSE);
+ tracker_dbus_async_return_if_fail (g_strv_length (mime_types) > 0, FALSE);
+ tracker_dbus_async_return_if_fail (uri != NULL, FALSE);
tracker_dbus_request_new (request_id,
"DBus request to search files by text & mime types & location, "
@@ -1058,7 +1098,7 @@
gint i = 0;
row_count = tracker_db_result_set_get_n_rows (result_set);
- *values = g_new0 (gchar *, row_count);
+ values = g_new0 (gchar *, row_count);
while (valid) {
tracker_db_result_set_get (result_set,
@@ -1066,7 +1106,7 @@
1, &name,
-1);
- *values[i++] = g_build_filename (prefix, name, NULL);
+ values[i++] = g_build_filename (prefix, name, NULL);
valid = tracker_db_result_set_iter_next (result_set);
g_free (prefix);
@@ -1075,11 +1115,13 @@
g_object_unref (result_set);
} else {
- *values = g_new0 (gchar *, 1);
- *values[0] = NULL;
+ values = g_new0 (gchar *, 1);
+ values[0] = NULL;
}
- tracker_dbus_request_success (request_id);
+ dbus_g_method_return (context, values);
+
+ g_strfreev (values);
- return TRUE;
+ tracker_dbus_request_success (request_id);
}
Modified: branches/indexer-split/src/trackerd/tracker-files.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-files.h (original)
+++ branches/indexer-split/src/trackerd/tracker-files.h Thu Jul 17 14:45:49 2008
@@ -48,88 +48,90 @@
GObjectClass parent;
};
-GType tracker_files_get_type (void);
+GType tracker_files_get_type (void);
+TrackerFiles *tracker_files_new (void);
+void tracker_files_exist (TrackerFiles *object,
+ const gchar *uri,
+ gboolean auto_create,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_create (TrackerFiles *object,
+ const gchar *uri,
+ gboolean is_directory,
+ const gchar *mime,
+ gint size,
+ gint mtime,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_delete (TrackerFiles *object,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_get_service_type (TrackerFiles *object,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_get_text_contents (TrackerFiles *object,
+ const gchar *uri,
+ gint offset,
+ gint max_length,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_search_text_contents (TrackerFiles *object,
+ const gchar *uri,
+ const gchar *text,
+ gint max_length,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_get_by_service_type (TrackerFiles *object,
+ gint live_query_id,
+ const gchar *service,
+ gint offset,
+ gint max_hits,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_get_by_mime_type (TrackerFiles *object,
+ gint live_query_id,
+ gchar **mime_types,
+ gint offset,
+ gint max_hits,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_get_by_mime_type_vfs (TrackerFiles *object,
+ gint live_query_id,
+ gchar **mime_types,
+ gint offset,
+ gint max_hits,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_get_mtime (TrackerFiles *object,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_get_metadata_for_files_in_folder (TrackerFiles *object,
+ gint live_query_id,
+ const gchar *uri,
+ gchar **fields,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_search_by_text_and_mime (TrackerFiles *object,
+ const gchar *text,
+ gchar **mime_types,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_search_by_text_and_location (TrackerFiles *object,
+ const gchar *text,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_files_search_by_text_and_mime_and_location (TrackerFiles *object,
+ const gchar *text,
+ gchar **mime_types,
+ const gchar *uri,
+ DBusGMethodInvocation *context,
+ GError **error);
+
-TrackerFiles *
- tracker_files_new (void);
-gboolean tracker_files_exist (TrackerFiles *object,
- const gchar *uri,
- gboolean auto_create,
- gboolean *value,
- GError **error);
-gboolean tracker_files_create (TrackerFiles *object,
- const gchar *uri,
- gboolean is_directory,
- const gchar *mime,
- gint size,
- gint mtime,
- GError **error);
-gboolean tracker_files_delete (TrackerFiles *object,
- const gchar *uri,
- GError **error);
-gboolean tracker_files_get_service_type (TrackerFiles *object,
- const gchar *uri,
- gchar **value,
- GError **error);
-gboolean tracker_files_get_text_contents (TrackerFiles *object,
- const gchar *uri,
- gint offset,
- gint max_length,
- gchar **value,
- GError **error);
-gboolean tracker_files_search_text_contents (TrackerFiles *object,
- const gchar *uri,
- const gchar *text,
- gint max_length,
- gchar **value,
- GError **error);
-gboolean tracker_files_get_by_service_type (TrackerFiles *object,
- gint live_query_id,
- const gchar *service,
- gint offset,
- gint max_hits,
- gchar ***values,
- GError **error);
-gboolean tracker_files_get_by_mime_type (TrackerFiles *object,
- gint live_query_id,
- gchar **mime_types,
- gint offset,
- gint max_hits,
- gchar ***values,
- GError **error);
-gboolean tracker_files_get_by_mime_type_vfs (TrackerFiles *object,
- gint live_query_id,
- gchar **mime_types,
- gint offset,
- gint max_hits,
- gchar ***values,
- GError **error);
-gboolean tracker_files_get_mtime (TrackerFiles *object,
- const gchar *uri,
- gint *value,
- GError **error);
-gboolean tracker_files_get_metadata_for_files_in_folder (TrackerFiles *object,
- gint live_query_id,
- const gchar *uri,
- gchar **fields,
- GPtrArray **values,
- GError **error);
-gboolean tracker_files_search_by_text_and_mime (TrackerFiles *object,
- const gchar *text,
- gchar **mime_types,
- gchar ***values,
- GError **error);
-gboolean tracker_files_search_by_text_and_location (TrackerFiles *object,
- const gchar *text,
- const gchar *uri,
- gchar ***values,
- GError **error);
-gboolean tracker_files_search_by_text_and_mime_and_location (TrackerFiles *object,
- const gchar *text,
- gchar **mime_types,
- const gchar *uri,
- gchar ***values,
- GError **error);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]