summaryrefslogtreecommitdiff
path: root/metadata/metatree.h
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2009-06-22 20:39:03 +0200
committerAlexander Larsson <alexl@redhat.com>2009-06-23 15:10:27 +0200
commitc97601731a5dbc9d34e8c4c208e993a3723deec5 (patch)
treee8e32dc0d08e658898cb43570f6626a7a8e2c605 /metadata/metatree.h
parenta8d6c3db07ad5d9dc75b94eb95492b03bc20e788 (diff)
downloadgvfs-c97601731a5dbc9d34e8c4c208e993a3723deec5.tar.gz
Initial code for metadata store
This adds a mmap based metadata store for NFS-safe highly efficient desktop-wide metadata lookup and store.
Diffstat (limited to 'metadata/metatree.h')
-rw-r--r--metadata/metatree.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/metadata/metatree.h b/metadata/metatree.h
new file mode 100644
index 00000000..b18d30d9
--- /dev/null
+++ b/metadata/metatree.h
@@ -0,0 +1,58 @@
+#include <glib.h>
+
+typedef struct _MetaTree MetaTree;
+
+typedef enum {
+ META_KEY_TYPE_NONE,
+ META_KEY_TYPE_STRING,
+ META_KEY_TYPE_STRINGV
+} MetaKeyType;
+
+typedef gboolean (*meta_tree_dir_enumerate_callback) (const char *entry,
+ guint64 last_changed,
+ gboolean has_children,
+ gboolean has_data,
+ gpointer user_data);
+
+typedef gboolean (*meta_tree_keys_enumerate_callback) (const char *key,
+ MetaKeyType type,
+ gpointer value,
+ gpointer user_data);
+
+void meta_tree_free (MetaTree *tree);
+MetaTree *meta_tree_open (const char *filename,
+ gboolean for_write);
+void meta_tree_refresh (MetaTree *tree); /* May invalidates all strings */
+
+
+MetaKeyType meta_tree_lookup_key_type (MetaTree *tree,
+ const char *path,
+ const char *key);
+guint64 meta_tree_get_last_changed (MetaTree *tree,
+ const char *path);
+char * meta_tree_lookup_string (MetaTree *tree,
+ const char *path,
+ const char *key);
+char ** meta_tree_lookup_stringv (MetaTree *tree,
+ const char *path,
+ const char *key);
+void meta_tree_enumerate_dir (MetaTree *tree,
+ const char *path,
+ meta_tree_dir_enumerate_callback callback,
+ gpointer user_data);
+void meta_tree_enumerate_keys (MetaTree *tree,
+ const char *path,
+ meta_tree_keys_enumerate_callback callback,
+ gpointer user_data);
+gboolean meta_tree_flush (MetaTree *tree);
+gboolean meta_tree_unset (MetaTree *tree,
+ const char *path,
+ const char *key);
+gboolean meta_tree_set_string (MetaTree *tree,
+ const char *path,
+ const char *key,
+ const char *value);
+gboolean meta_tree_set_stringv (MetaTree *tree,
+ const char *path,
+ const char *key,
+ const char **value);