]> git.sur5r.net Git - openldap/commitdiff
Add mdb_env_<set,get>_userctx()
authorHallvard Furuseth <hallvard@openldap.org>
Mon, 6 Jan 2014 22:17:38 +0000 (23:17 +0100)
committerHallvard Furuseth <hallvard@openldap.org>
Mon, 6 Jan 2014 22:17:38 +0000 (23:17 +0100)
libraries/liblmdb/lmdb.h
libraries/liblmdb/mdb.c

index 5f2216e36ec8f398ddf37aa86db159b3ddc51c45..911b61bec04f3f5794241ff83c3f1ce3e9644d9c 100644 (file)
@@ -802,6 +802,21 @@ int  mdb_env_set_maxdbs(MDB_env *env, MDB_dbi dbs);
         */
 int  mdb_env_get_maxkeysize(MDB_env *env);
 
+       /** @brief Set application information associated with the #MDB_env.
+        *
+        * @param[in] env An environment handle returned by #mdb_env_create()
+        * @param[in] ctx An arbitrary pointer for whatever the application needs.
+        * @return A non-zero error value on failure and 0 on success.
+        */
+int  mdb_env_set_userctx(MDB_env *env, void *ctx);
+
+       /** @brief Get the application information associated with the #MDB_env.
+        *
+        * @param[in] env An environment handle returned by #mdb_env_create()
+        * @return The pointer set by #mdb_env_set_userctx().
+        */
+void *mdb_env_get_userctx(MDB_env *env);
+
        /** @brief Create a transaction for use with the environment.
         *
         * The transaction handle may be discarded using #mdb_txn_abort() or #mdb_txn_commit().
index 70ef5e66123a15613ffb6d2c8b18f8bfc796fb9c..82d40113785978312a85b26c8e4ccdb46828fa90 100644 (file)
@@ -1080,6 +1080,7 @@ struct MDB_env {
        sem_t           *me_rmutex;             /* Shared mutexes are not supported */
        sem_t           *me_wmutex;
 #endif
+       void            *me_userctx;     /**< User-settable context */
 };
 
        /** Nested transaction */
@@ -7916,6 +7917,21 @@ mdb_env_get_flags(MDB_env *env, unsigned int *arg)
        return MDB_SUCCESS;
 }
 
+int
+mdb_env_set_userctx(MDB_env *env, void *ctx)
+{
+       if (!env)
+               return EINVAL;
+       env->me_userctx = ctx;
+       return MDB_SUCCESS;
+}
+
+void *
+mdb_env_get_userctx(MDB_env *env)
+{
+       return env ? env->me_userctx : NULL;
+}
+
 int
 mdb_env_get_path(MDB_env *env, const char **arg)
 {