diff options
| -rw-r--r-- | lib/abstract/Storage.ml | 3 | ||||
| -rw-r--r-- | lib/backend/storage/LMDB.ml | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/abstract/Storage.ml b/lib/abstract/Storage.ml index 888a354..afd1a3c 100644 --- a/lib/abstract/Storage.ml +++ b/lib/abstract/Storage.ml @@ -6,6 +6,9 @@ module type STORAGE = sig val connect : Concepts.Configuration.term -> (connection, Concepts.Condition.condition) result + (** close `connection`, after which none of its transactions may be used *) + val disconnect : connection -> unit + (** begin a transaction within `connection` *) val start : connection -> (transaction, Concepts.Condition.condition) result diff --git a/lib/backend/storage/LMDB.ml b/lib/backend/storage/LMDB.ml index 92de30e..e364b6a 100644 --- a/lib/backend/storage/LMDB.ml +++ b/lib/backend/storage/LMDB.ml @@ -167,6 +167,8 @@ let connect (c : Concepts.Configuration.term) = Concepts.Condition.( complement ("path" |=| Concepts.Value.String path & "mode" |=| Concepts.Value.Integer mode) ) +let disconnect ({env; _} : connection) = C.mdb_env_close env + let begin_with flags ({env; dbi} : connection) = C.mdb_txn_begin' env C.null_txn flags |> Result.map (fun tx -> {tx; dbi; active = true;}) |
