diff Framework/Common/DatabaseManager.h @ 231:0a9b48d19643

removed mutex out of DatabaseManager
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 06 Apr 2021 11:59:31 +0200
parents a4918d57435c
children 35598014f140
line wrap: on
line diff
--- a/Framework/Common/DatabaseManager.h	Tue Apr 06 11:17:00 2021 +0200
+++ b/Framework/Common/DatabaseManager.h	Tue Apr 06 11:59:31 2021 +0200
@@ -27,18 +27,21 @@
 #include <Compatibility.h>  // For std::unique_ptr<>
 #include <Enumerations.h>
 
-#include <boost/thread/recursive_mutex.hpp>
 #include <memory>
 
 
 namespace OrthancDatabases
 {
+  /**
+   * WARNING: In PostgreSQL releases <= 3.3 and in MySQL releases <=
+   * 3.0, this class was protected by a mutex. It is now assumed that
+   * locking must be implemented at a higher level.
+   **/
   class DatabaseManager : public boost::noncopyable
   {
   private:
     typedef std::map<StatementLocation, IPrecompiledStatement*>  CachedStatements;
 
-    boost::recursive_mutex         mutex_;
     std::unique_ptr<IDatabase>     database_;
     std::unique_ptr<ITransaction>  transaction_;
     CachedStatements               cachedStatements_;
@@ -86,10 +89,9 @@
     class Transaction : public boost::noncopyable
     {
     private:
-      boost::recursive_mutex::scoped_lock  lock_;
-      DatabaseManager&                     manager_;
-      IDatabase&                           database_;
-      bool                                 committed_;
+      DatabaseManager&  manager_;
+      IDatabase&        database_;
+      bool              committed_;
 
     public:
       explicit Transaction(DatabaseManager& manager,
@@ -114,11 +116,10 @@
     class StatementBase : public boost::noncopyable
     {
     private:
-      DatabaseManager&                     manager_;
-      boost::recursive_mutex::scoped_lock  lock_;
-      ITransaction&                        transaction_;
-      std::unique_ptr<Query>                 query_;
-      std::unique_ptr<IResult>               result_;
+      DatabaseManager&          manager_;
+      ITransaction&             transaction_;
+      std::unique_ptr<Query>    query_;
+      std::unique_ptr<IResult>  result_;
 
       IResult& GetResult() const;