[tracker/external-crawler: 34/42] libtracker-miner: Added tracker_indexing_tree_get_master_root() and set in constructed()
- From: Martyn James Russell <mr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/external-crawler: 34/42] libtracker-miner: Added tracker_indexing_tree_get_master_root() and set in constructed()
- Date: Wed, 6 Aug 2014 07:43:22 +0000 (UTC)
commit 410923dfc7aaaff9f862d51092d2209d8dad3e13
Author: Martyn Russell <martyn lanedo com>
Date: Tue Jul 1 10:42:31 2014 +0100
libtracker-miner: Added tracker_indexing_tree_get_master_root() and set in constructed()
This function gets the top level root for all roots, e.g. file:///
We also create the root nodes in constructed() not init() because then the
root GFile has been set in the properties when the object is initiated
.../libtracker-miner/libtracker-miner-sections.txt | 1 +
src/libtracker-miner/tracker-indexing-tree.c | 68 +++++++++++++++++---
src/libtracker-miner/tracker-indexing-tree.h | 2 +
3 files changed, 61 insertions(+), 10 deletions(-)
---
diff --git a/docs/reference/libtracker-miner/libtracker-miner-sections.txt
b/docs/reference/libtracker-miner/libtracker-miner-sections.txt
index 906dfa4..965d8df 100644
--- a/docs/reference/libtracker-miner/libtracker-miner-sections.txt
+++ b/docs/reference/libtracker-miner/libtracker-miner-sections.txt
@@ -11,6 +11,7 @@ tracker_indexing_tree_file_is_root
tracker_indexing_tree_file_matches_filter
tracker_indexing_tree_get_default_policy
tracker_indexing_tree_get_filter_hidden
+tracker_indexing_tree_get_master_root
tracker_indexing_tree_get_root
tracker_indexing_tree_list_roots
tracker_indexing_tree_new
diff --git a/src/libtracker-miner/tracker-indexing-tree.c b/src/libtracker-miner/tracker-indexing-tree.c
index 63b881d..79a9c9d 100644
--- a/src/libtracker-miner/tracker-indexing-tree.c
+++ b/src/libtracker-miner/tracker-indexing-tree.c
@@ -190,6 +190,29 @@ tracker_indexing_tree_set_property (GObject *object,
}
static void
+tracker_indexing_tree_constructed (GObject *object)
+{
+ TrackerIndexingTree *tree;
+ TrackerIndexingTreePrivate *priv;
+ NodeData *data;
+
+ G_OBJECT_CLASS (tracker_indexing_tree_parent_class)->constructed (object);
+
+ tree = TRACKER_INDEXING_TREE (object);
+ priv = tree->priv;
+
+ /* Add a shallow root node */
+ if (priv->root == NULL) {
+ priv->root = g_file_new_for_uri ("file:///");
+ }
+
+ data = node_data_new (priv->root, 0);
+ data->shallow = TRUE;
+
+ priv->config_tree = g_node_new (data);
+}
+
+static void
tracker_indexing_tree_finalize (GObject *object)
{
TrackerIndexingTreePrivate *priv;
@@ -222,6 +245,7 @@ tracker_indexing_tree_class_init (TrackerIndexingTreeClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = tracker_indexing_tree_finalize;
+ object_class->constructed = tracker_indexing_tree_constructed;
object_class->set_property = tracker_indexing_tree_set_property;
object_class->get_property = tracker_indexing_tree_get_property;
@@ -276,21 +300,11 @@ static void
tracker_indexing_tree_init (TrackerIndexingTree *tree)
{
TrackerIndexingTreePrivate *priv;
- NodeData *data;
gint i;
priv = tree->priv = G_TYPE_INSTANCE_GET_PRIVATE (tree,
TRACKER_TYPE_INDEXING_TREE,
TrackerIndexingTreePrivate);
- /* Add a shallow root node */
- if (priv->root == NULL) {
- priv->root = g_file_new_for_uri ("file:///");
- }
-
- data = node_data_new (priv->root, 0);
- data->shallow = TRUE;
-
- priv->config_tree = g_node_new (data);
for (i = TRACKER_FILTER_FILE; i <= TRACKER_FILTER_PARENT_DIRECTORY; i++) {
priv->policies[i] = TRACKER_FILTER_POLICY_ACCEPT;
@@ -866,6 +880,40 @@ tracker_indexing_tree_get_root (TrackerIndexingTree *tree,
return NULL;
}
+/**
+ * tracker_indexing_tree_get_master_root:
+ * @tree: a #TrackerIndexingTree
+ *
+ * Returns the #GFile that represents the master root location for all
+ * indexing locations. For example, if
+ * <filename>file:///etc</filename> is an indexed path and so was
+ * <filename>file:///home/user</filename>, the master root is
+ * <filename>file:///</filename>. Only one scheme per @tree can be
+ * used, so you can not mix <filename>http</filename> and
+ * <filename>file</filename> roots in @tree.
+ *
+ * The return value should <emphasis>NEVER</emphasis> be %NULL. In
+ * cases where no root is given, we fallback to
+ * <filename>file:///</filename>.
+ *
+ * Returns: (transfer none): the effective root for all locations, or
+ * %NULL on error. The root is owned by @tree and should not be freed.
+ * It can be referenced using g_object_ref().
+ *
+ * Since: 1.2.
+ **/
+GFile *
+tracker_indexing_tree_get_master_root (TrackerIndexingTree *tree)
+{
+ TrackerIndexingTreePrivate *priv;
+
+ g_return_val_if_fail (TRACKER_IS_INDEXING_TREE (tree), NULL);
+
+ priv = tree->priv;
+
+ return priv->root;
+}
+
gboolean
tracker_indexing_tree_file_is_root (TrackerIndexingTree *tree,
GFile *file)
diff --git a/src/libtracker-miner/tracker-indexing-tree.h b/src/libtracker-miner/tracker-indexing-tree.h
index 87b98c8..1f6533c 100644
--- a/src/libtracker-miner/tracker-indexing-tree.h
+++ b/src/libtracker-miner/tracker-indexing-tree.h
@@ -114,6 +114,8 @@ void tracker_indexing_tree_set_default_policy (TrackerIndexingTre
GFile * tracker_indexing_tree_get_root (TrackerIndexingTree *tree,
GFile *file,
TrackerDirectoryFlags *directory_flags);
+GFile * tracker_indexing_tree_get_master_root (TrackerIndexingTree *tree);
+
gboolean tracker_indexing_tree_file_is_root (TrackerIndexingTree *tree,
GFile *file);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]