Mercurial > hg > orthanc-databases
diff Framework/MySQL/MySQLDatabase.cpp @ 226:a4918d57435c
DatabaseManager doesn't IDatabaseFactory anymore
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 02 Apr 2021 19:23:36 +0200 |
parents | ee5858d438dc |
children | d1b124d116c1 |
line wrap: on
line diff
--- a/Framework/MySQL/MySQLDatabase.cpp Thu Apr 01 19:18:19 2021 +0200 +++ b/Framework/MySQL/MySQLDatabase.cpp Fri Apr 02 19:23:36 2021 +0200 @@ -21,11 +21,12 @@ #include "MySQLDatabase.h" +#include "../Common/ImplicitTransaction.h" +#include "../Common/Integer64Value.h" +#include "../Common/RetryDatabaseFactory.h" #include "MySQLResult.h" #include "MySQLStatement.h" #include "MySQLTransaction.h" -#include "../Common/ImplicitTransaction.h" -#include "../Common/Integer64Value.h" #include <Compatibility.h> // For std::unique_ptr<> #include <Logging.h> @@ -612,4 +613,33 @@ { database_.ReleaseAdvisoryLock(lock_); } + + + MySQLDatabase* MySQLDatabase::OpenDatabaseConnection(const MySQLParameters& parameters) + { + class Factory : public RetryDatabaseFactory + { + private: + const MySQLParameters& parameters_; + + protected: + virtual IDatabase* TryOpen() + { + std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_)); + db->Open(); + return db.release(); + } + + public: + Factory(const MySQLParameters& parameters) : + RetryDatabaseFactory(parameters.GetMaxConnectionRetries(), + parameters.GetConnectionRetryInterval()), + parameters_(parameters) + { + } + }; + + Factory factory(parameters); + return dynamic_cast<MySQLDatabase*>(factory.Open()); + } }