[Tracker] About the Xesam support in Tracker



Dear Tracker experts,

I have made a patch of Tracker according to Xesam ontology (RC2), which
modifies the method "GetStatus" (as attached).

This patch can make the tracker returns an array of two strings
containing the state information of the search engine. The value at
position zero is one of
"Initializing","Watching","Indexing","Pending","Optimizing","Idle","Shutdown".
The value at position one is a string formatted integer in the range
0-100. But the function computing the percent of indexing Tracker has
finished should be implemented later.

If you have any suggestions please don't hesitate to let me know.

Thanks a lot.

Regards,

Wendy.
Index: src/trackerd/tracker-utils.h
===================================================================
--- src/trackerd/tracker-utils.h        (revision 1230)
+++ src/trackerd/tracker-utils.h        (working copy)
@@ -609,7 +610,7 @@
 
 void           tracker_add_io_grace            (const char *uri);
 
-char *         tracker_get_status              (void);
+char **         tracker_get_status             (void);
 
 void           free_file_change                (FileChange **user_data);
 gboolean       tracker_do_cleanup              (const gchar *sig_msg);
Index: src/trackerd/tracker-dbus-methods.c
===================================================================
--- src/trackerd/tracker-dbus-methods.c (revision 1230)
+++ src/trackerd/tracker-dbus-methods.c (working copy)
@@ -409,12 +409,13 @@
 tracker_dbus_method_get_status (DBusRec *rec)
 {
        DBusMessage *reply = dbus_message_new_method_return (rec->message);
+        int num = 2; 
                          
-        gchar* status = tracker_get_status ();
+        gchar** status = tracker_get_status ();
 
         dbus_message_append_args (reply,
-                                  DBUS_TYPE_STRING, &status,
+                                 DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &status, num,
                                   DBUS_TYPE_INVALID);
 
        g_free (status);
Index: src/trackerd/tracker-dbus.c
===================================================================
--- src/trackerd/tracker-dbus.c (revision 1230)
+++ src/trackerd/tracker-dbus.c (working copy)
@@ -112,9 +112,10 @@
 {
        DBusMessage   *msg;
        dbus_uint32_t  serial = 0;
-       gchar         *status;
+       gchar         **status;
        gboolean       battery_pause;
         gboolean       enable_indexing;
+       int num = 2;
 
        msg = dbus_message_new_signal (TRACKER_OBJECT, TRACKER_INTERFACE, TRACKER_SIGNAL_INDEX_STATUS_CHANGE);
                                
@@ -140,7 +141,7 @@
        */
 
        dbus_message_append_args (msg, 
-                                 DBUS_TYPE_STRING, &status,
+                                 DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &status, num,
                                  DBUS_TYPE_BOOLEAN, &tracker->first_time_index,
                                  DBUS_TYPE_BOOLEAN, &tracker->in_merge,
                                  DBUS_TYPE_BOOLEAN, &tracker->pause_manual,
Index: src/trackerd/tracker-utils.c
===================================================================
--- src/trackerd/tracker-utils.c        (revision 1230)
+++ src/trackerd/tracker-utils.c        (working copy)
@@ -3115,16 +3115,30 @@
        tracker->grace_period++;
 }
 
+//This method will return the percent of indexing that Tracker has finished.
+//We will implement this later. 
+gchar *
+tracker_index_percent (void)
+{
+       //The return value is a string formatted integer in the range of 0-100
+       //tracker_log ("Tracker has finished %s", tracker->percent);
+       return g_strdup ("0");
+}
 
-gchar *
+gchar **
 tracker_get_status (void)
 {
+       gchar* status[] = {"Initializing", "Watching", "Indexing", "Pending", "Optimizing", "Idle", 
"Shutdown"};
+       gchar* tracker_status[3];
        if (tracker->status < 7) {
-                gchar *tracker_status[] = {"Initializing", "Watching", "Indexing", "Pending", "Optimizing", 
"Idle", "Shutdown"};
-                return g_strdup (tracker_status[tracker->status]);
+               tracker_status[0] = g_strdup (status[tracker->status]);
+               tracker_status[1] = tracker_index_percent (); 
         } else {
-                return g_strdup ("Idle");
+               tracker_status[0] = g_strdup ("Idle");
+               tracker_status[1] = g_strdup ("0");
         }
+       tracker_status[2] = NULL;
+       return g_strdupv (tracker_status); 
 }
 
 
Index: src/libtracker/tracker.h
===================================================================
--- src/libtracker/tracker.h    (revision 1230)
+++ src/libtracker/tracker.h    (working copy)
@@ -109,7 +109,7 @@
 /* synchronous calls */
 
 int            tracker_get_version                             (TrackerClient *client, GError **error);
-char *         tracker_get_status                              (TrackerClient *client, GError **error);
+char **         tracker_get_status                             (TrackerClient *client, GError **error);
 GHashTable *   tracker_get_services                            (TrackerClient *client, gboolean 
main_services_only, GError **error);
 GPtrArray *    tracker_get_stats                               (TrackerClient *client, GError **error);
 
Index: src/libtracker/tracker.c
===================================================================
--- src/libtracker/tracker.c    (revision 1230)
+++ src/libtracker/tracker.c    (working copy)
@@ -352,10 +355,10 @@
        return version;
 }      
 
-char *
+char **
 tracker_get_status (TrackerClient *client, GError **error)
 {
-       char *status ;
+       char **status ;
        org_freedesktop_Tracker_get_status (client->proxy, &status, &*error);
        return status;
 }      
Index: src/libtracker/tracker-status.c
===================================================================
--- src/libtracker/tracker-status.c     (revision 1230)
+++ src/libtracker/tracker-status.c     (working copy)
@@ -50,7 +50,7 @@
                 return 1;
         }
 
-        gchar* status = tracker_get_status (client, &error);
+        gchar** status = tracker_get_status (client, &error);
 
        if (error) {
                g_printerr (_("%s: internal tracker error: %s"), 
@@ -60,7 +60,7 @@
                return 1;
        }
 
-       if (status) g_print ("Tracker daemon's status is %s\n", status);
+       if (status) g_print ("Tracker daemon's status is %s, %s\n", *status, *(status+1));
 
        tracker_disconnect (client);
 
Index: src/tracker-search-tool/tracker-search-tool.c
===================================================================
--- src/tracker-search-tool/tracker-search-tool.c       (revision 1230)
+++ src/tracker-search-tool/tracker-search-tool.c       (working copy)
@@ -1814,7 +1814,7 @@
        }
 
        GError *error2 = NULL;
-       gchar* status = tracker_get_status (tracker_client, &error2);
+       gchar** status = tracker_get_status (tracker_client, &error2);
 
        if (error2) {
                g_error_free (error2);
Index: src/tracker-preferences/tracker-preferences.c
===================================================================
--- src/tracker-preferences/tracker-preferences.c       (revision 1230)
+++ src/tracker-preferences/tracker-preferences.c       (working copy)
@@ -509,7 +509,7 @@
 static gboolean
 if_trackerd_start (TrackerPreferencesPrivate *priv)
 {
-       gchar *status = NULL;
+       gchar **status = NULL;
        TrackerClient *client = NULL;
 
        client = tracker_connect (FALSE);
@@ -520,7 +520,7 @@
        status = tracker_get_status (client, NULL);
        tracker_disconnect (client);
 
-       if (strcmp (status, "Shutdown") == 0)
+       if (strcmp (*status, "Shutdown") == 0)
                return FALSE;
        else
                return TRUE;
Index: src/tracker-applet/tracker-applet.c
===================================================================
--- src/tracker-applet/tracker-applet.c (revision 1230)
+++ src/tracker-applet/tracker-applet.c (working copy)
@@ -1135,14 +1135,14 @@
 
        /* set signal handlers */
        dbus_g_object_register_marshaller (tracker_VOID__STRING_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN,
-                                          G_TYPE_NONE, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, 
G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_INVALID);
+                                          G_TYPE_NONE, G_TYPE_STRV, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, 
G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_INVALID);
 
        dbus_g_object_register_marshaller (tracker_VOID__STRING_STRING_INT_INT_INT,
                                           G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, 
G_TYPE_INT, G_TYPE_INVALID);
 
        dbus_g_proxy_add_signal (priv->tracker->proxy,
                            "IndexStateChange",
-                           G_TYPE_STRING,
+                           G_TYPE_STRV,
                            G_TYPE_BOOLEAN,
                            G_TYPE_BOOLEAN,
                            G_TYPE_BOOLEAN,
Index: data/tracker-introspect.xml
===================================================================
--- data/tracker-introspect.xml (revision 1230)
+++ data/tracker-introspect.xml (working copy)
@@ -71,9 +71,11 @@
                        <arg type="i" name="version" direction="out" />
                </method>
 
-                <!-- Return the status of tracker daemon - status is one of 
"Initializing","Watching","Indexing","Pending","Optimizing","Idle","Shutdown" -->
+                <!-- Return the status of tracker daemon as an array of two strings. 
+                    The value at position zero is one the status one of 
"Initializing","Watching","Indexing","Pending","Optimizing","Idle","Shutdown".
+                    The value at position one is a string formatted integer in the range 0-100 -->
                 <method name="GetStatus">
-                        <arg type="s" name="status" direction="out" />
+                        <arg type="as" name="status" direction="out" />
                 </method>
 
 


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