]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/proto-bdb.h
Cleanup prev commit
[openldap] / servers / slapd / back-bdb / proto-bdb.h
index 232289f7c924c26153a546b3e1f31da081757477..34862d31909dda6d7a9c471290f18a590dfe5e6c 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2000-2005 The OpenLDAP Foundation.
+ * Copyright 2000-2007 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,25 +32,32 @@ LDAP_BEGIN_DECL
 
 #define bdb_attr_mask                          BDB_SYMBOL(attr_mask)
 #define bdb_attr_flush                         BDB_SYMBOL(attr_flush)
+#define bdb_attr_slot                          BDB_SYMBOL(attr_slot)
 #define bdb_attr_index_config          BDB_SYMBOL(attr_index_config)
 #define bdb_attr_index_destroy         BDB_SYMBOL(attr_index_destroy)
 #define bdb_attr_index_free                    BDB_SYMBOL(attr_index_free)
 #define bdb_attr_index_unparse         BDB_SYMBOL(attr_index_unparse)
+#define bdb_attr_info_free                     BDB_SYMBOL(attr_info_free)
 
 AttrInfo *bdb_attr_mask( struct bdb_info *bdb,
        AttributeDescription *desc );
 
 void bdb_attr_flush( struct bdb_info *bdb );
 
+int bdb_attr_slot( struct bdb_info *bdb,
+       AttributeDescription *desc, unsigned *insert );
+
 int bdb_attr_index_config LDAP_P(( struct bdb_info *bdb,
        const char *fname, int lineno,
        int argc, char **argv ));
 
 void bdb_attr_index_unparse LDAP_P(( struct bdb_info *bdb, BerVarray *bva ));
-void bdb_attr_index_destroy LDAP_P(( Avlnode *tree ));
+void bdb_attr_index_destroy LDAP_P(( struct bdb_info *bdb ));
 void bdb_attr_index_free LDAP_P(( struct bdb_info *bdb,
        AttributeDescription *ad ));
 
+void bdb_attr_info_free( AttrInfo *ai );
+
 /*
  * config.c
  */
@@ -113,6 +120,7 @@ int bdb_dn2id_children(
 
 int bdb_dn2idl(
        Operation *op,
+       u_int32_t locker,
        Entry *e,
        ID *ids,
        ID *stack );
@@ -124,6 +132,7 @@ int bdb_dn2idl(
 int bdb_dn2id_parent(
        Operation *op,
        DB_TXN *txn,
+       u_int32_t locker,
        EntryInfo *ei,
        ID *idp );
 
@@ -158,6 +167,7 @@ char *ebcdic_dberror( int rc );
 
 int bdb_filter_candidates(
        Operation *op,
+       u_int32_t locker,
        Filter  *f,
        ID *ids,
        ID *tmp,
@@ -191,6 +201,7 @@ int bdb_id2entry_delete(
 int bdb_id2entry(
        BackendDB *be,
        DB_TXN *tid,
+       u_int32_t locker,
        ID id,
        Entry **e);
 #endif
@@ -273,7 +284,7 @@ unsigned bdb_idl_search( ID *ids, ID id );
 int bdb_idl_fetch_key(
        BackendDB       *be,
        DB                      *db,
-       DB_TXN          *tid,
+       u_int32_t locker,
        DBT                     *key,
        ID                      *ids,
        DBC                     **saved_cursor,
@@ -320,6 +331,8 @@ int bdb_idl_append_one( ID *ids, ID id );
 #define bdb_index_param                                BDB_SYMBOL(index_param)
 #define bdb_index_values                       BDB_SYMBOL(index_values)
 #define bdb_index_entry                                BDB_SYMBOL(index_entry)
+#define bdb_index_recset                       BDB_SYMBOL(index_recset)
+#define bdb_index_recrun                       BDB_SYMBOL(index_recrun)
 
 extern int
 bdb_index_is_indexed LDAP_P((
@@ -344,6 +357,22 @@ bdb_index_values LDAP_P((
        ID id,
        int opid ));
 
+extern int
+bdb_index_recset LDAP_P((
+       struct bdb_info *bdb,
+       Attribute *a,
+       AttributeType *type,
+       struct berval *tags,
+       IndexRec *ir ));
+
+extern int
+bdb_index_recrun LDAP_P((
+       Operation *op,
+       struct bdb_info *bdb,
+       IndexRec *ir,
+       ID id,
+       int base ));
+
 int bdb_index_entry LDAP_P(( Operation *op, DB_TXN *t, int r, Entry *e ));
 
 #define bdb_index_entry_add(op,t,e) \
@@ -361,7 +390,7 @@ extern int
 bdb_key_read(
     Backend    *be,
        DB *db,
-       DB_TXN *txn,
+       u_int32_t locker,
     struct berval *k,
        ID *ids,
     DBC **saved_cursor,
@@ -399,6 +428,19 @@ int bdb_modify_internal(
        char *textbuf,
        size_t textlen );
 
+/*
+ * monitor.c
+ */
+
+#define bdb_monitor_db_init    BDB_SYMBOL(monitor_db_init)
+#define bdb_monitor_db_open    BDB_SYMBOL(monitor_db_open)
+#define bdb_monitor_db_close   BDB_SYMBOL(monitor_db_close)
+#define bdb_monitor_db_destroy BDB_SYMBOL(monitor_db_destroy)
+
+int bdb_monitor_db_init( BackendDB *be );
+int bdb_monitor_db_open( BackendDB *be );
+int bdb_monitor_db_close( BackendDB *be );
+int bdb_monitor_db_destroy( BackendDB *be );
 
 /*
  * cache.c
@@ -409,25 +451,27 @@ int bdb_modify_internal(
        ldap_pvt_thread_mutex_lock( &(e)->bei_kids_mutex )
 #define        bdb_cache_entryinfo_unlock(e) \
        ldap_pvt_thread_mutex_unlock( &(e)->bei_kids_mutex )
+#define        bdb_cache_entryinfo_trylock(e) \
+       ldap_pvt_thread_mutex_trylock( &(e)->bei_kids_mutex )
 
 /* What a mess. Hopefully the current cache scheme will stabilize
  * and we can trim out all of this stuff.
  */
 #if 0
-void bdb_cache_return_entry_rw( DB_ENV *env, Cache *cache, Entry *e,
+void bdb_cache_return_entry_rw( struct bdb_info *bdb, Entry *e,
        int rw, DB_LOCK *lock );
 #else
-#define bdb_cache_return_entry_rw( env, cache, e, rw, lock ) \
-       bdb_cache_entry_db_unlock( env, lock )
-#define        bdb_cache_return_entry( env, lock ) \
-       bdb_cache_entry_db_unlock( env, lock )
+#define bdb_cache_return_entry_rw( bdb, e, rw, lock ) \
+       bdb_cache_entry_db_unlock( bdb, lock )
+#define        bdb_cache_return_entry( bdb, lock ) \
+       bdb_cache_entry_db_unlock( bdb, lock )
 #endif
-#define bdb_cache_return_entry_r(env, c, e, l) \
-       bdb_cache_return_entry_rw((env), (c), (e), 0, (l))
-#define bdb_cache_return_entry_w(env, c, e, l) \
-       bdb_cache_return_entry_rw((env), (c), (e), 1, (l))
+#define bdb_cache_return_entry_r(bdb, e, l) \
+       bdb_cache_return_entry_rw((bdb), (e), 0, (l))
+#define bdb_cache_return_entry_w(bdb, e, l) \
+       bdb_cache_return_entry_rw((bdb), (e), 1, (l))
 #if 0
-void bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw );
+void bdb_unlocked_cache_return_entry_rw( struct bdb_info *bdb, Entry *e, int rw );
 #else
 #define        bdb_unlocked_cache_return_entry_rw( a, b, c )   ((void)0)
 #endif
@@ -459,7 +503,8 @@ int bdb_cache_add(
        EntryInfo *pei,
        Entry   *e,
        struct berval *nrdn,
-       u_int32_t locker
+       u_int32_t locker,
+       DB_LOCK *lock
 );
 int bdb_cache_modrdn(
        struct bdb_info *bdb,
@@ -471,9 +516,9 @@ int bdb_cache_modrdn(
        DB_LOCK *lock
 );
 int bdb_cache_modify(
+       struct bdb_info *bdb,
        Entry *e,
        Attribute *newAttrs,
-       DB_ENV *env,
        u_int32_t locker,
        DB_LOCK *lock
 );
@@ -500,13 +545,13 @@ int
 bdb_cache_find_parent(
        Operation *op,
        DB_TXN *txn,
+       u_int32_t       locker,
        ID id,
        EntryInfo **res
 );
 int bdb_cache_delete(
-       Cache   *cache,
+       struct bdb_info *bdb,
        Entry   *e,
-       DB_ENV  *env,
        u_int32_t locker,
        DB_LOCK *lock
 );
@@ -515,12 +560,6 @@ void bdb_cache_delete_cleanup(
        EntryInfo *ei
 );
 void bdb_cache_release_all( Cache *cache );
-void bdb_cache_delete_entry(
-       struct bdb_info *bdb,
-       EntryInfo *ei,
-       u_int32_t locker,
-       DB_LOCK *lock
-);
 
 #ifdef BDB_HIER
 int hdb_cache_load(
@@ -532,7 +571,7 @@ int hdb_cache_load(
 
 #define bdb_cache_entry_db_relock              BDB_SYMBOL(cache_entry_db_relock)
 int bdb_cache_entry_db_relock(
-       DB_ENV *env,
+       struct bdb_info *bdb,
        u_int32_t locker,
        EntryInfo *ei,
        int rw,
@@ -540,7 +579,7 @@ int bdb_cache_entry_db_relock(
        DB_LOCK *lock );
 
 int bdb_cache_entry_db_unlock(
-       DB_ENV *env,
+       struct bdb_info *bdb,
        DB_LOCK *lock );
 
 #ifdef BDB_REUSE_LOCKERS
@@ -592,6 +631,7 @@ bdb_trans_backoff( int num_retries );
 #define bdb_tool_dn2id_get             BDB_SYMBOL(tool_dn2id_get)
 #define bdb_tool_id2entry_get          BDB_SYMBOL(tool_id2entry_get)
 #define bdb_tool_entry_modify          BDB_SYMBOL(tool_entry_modify)
+#define bdb_tool_idl_add               BDB_SYMBOL(tool_idl_add)
 
 extern BI_init                         bdb_back_initialize;
 
@@ -623,6 +663,8 @@ extern BI_tool_dn2id_get            bdb_tool_dn2id_get;
 extern BI_tool_id2entry_get            bdb_tool_id2entry_get;
 extern BI_tool_entry_modify            bdb_tool_entry_modify;
 
+int bdb_tool_idl_add( BackendDB *be, DB *db, DB_TXN *txn, DBT *key, ID id );
+
 LDAP_END_DECL
 
 #endif /* _PROTO_BDB_H */