ldb: make key/value backends expose if there is an active transaction
[samba.git] / lib / ldb / ldb_tdb / ldb_tdb.h
index bf67990076412a96836871b4dc0197fe11340ede..72ebb9713f2f70ebbb20201fe4a79b2ed1107afa 100644 (file)
@@ -10,13 +10,13 @@ typedef int (*ldb_kv_traverse_fn)(struct ltdb_private *ltdb,
                                  void *ctx);
 
 struct kv_db_ops {
-       int (*store)(struct ltdb_private *ltdb, TDB_DATA key, TDB_DATA data, int flags);
-       int (*delete)(struct ltdb_private *ltdb, TDB_DATA key);
+       int (*store)(struct ltdb_private *ltdb, struct ldb_val key, struct ldb_val data, int flags);
+       int (*delete)(struct ltdb_private *ltdb, struct ldb_val key);
        int (*iterate)(struct ltdb_private *ltdb, ldb_kv_traverse_fn fn, void *ctx);
-       int (*update_in_iterate)(struct ltdb_private *ltdb, TDB_DATA key,
-                                TDB_DATA key2, TDB_DATA data, void *ctx);
-       int (*fetch_and_parse)(struct ltdb_private *ltdb, TDB_DATA key,
-                               int (*parser)(TDB_DATA key, TDB_DATA data,
+       int (*update_in_iterate)(struct ltdb_private *ltdb, struct ldb_val key,
+                                struct ldb_val key2, struct ldb_val data, void *ctx);
+       int (*fetch_and_parse)(struct ltdb_private *ltdb, struct ldb_val key,
+                               int (*parser)(struct ldb_val key, struct ldb_val data,
                                              void *private_data),
                                void *ctx);
        int (*lock_read)(struct ldb_module *);
@@ -29,6 +29,7 @@ struct kv_db_ops {
        const char * (*errorstr)(struct ltdb_private *ltdb);
        const char * (*name)(struct ltdb_private *ltdb);
        bool (*has_changed)(struct ltdb_private *ltdb);
+       bool (*transaction_active)(struct ltdb_private *ltdb);
 };
 
 /* this private structure is used by the ltdb backend in the
@@ -65,6 +66,8 @@ struct ltdb_private {
 
        bool read_only;
 
+       bool reindex_failed;
+
        const struct ldb_schema_syntax *GUID_index_syntax;
 
        /*
@@ -217,3 +220,7 @@ struct tdb_context *ltdb_wrap_open(TALLOC_CTX *mem_ctx,
 int init_store(struct ltdb_private *ltdb, const char *name,
               struct ldb_context *ldb, const char *options[],
               struct ldb_module **_module);
+
+int ltdb_connect(struct ldb_context *ldb, const char *url,
+                unsigned int flags, const char *options[],
+                struct ldb_module **_module);