Mercurial > hg > orthanc-databases
diff Framework/MySQL/MySQLDatabase.cpp @ 255:d663d9e44f8d
reintroduction of IDatabaseFactory into DatabaseManager
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 14 Apr 2021 17:57:08 +0200 |
parents | 33fa478c119a |
children | b8ba198a8df3 |
line wrap: on
line diff
--- a/Framework/MySQL/MySQLDatabase.cpp Wed Apr 14 15:33:57 2021 +0200 +++ b/Framework/MySQL/MySQLDatabase.cpp Wed Apr 14 17:57:08 2021 +0200 @@ -661,31 +661,38 @@ } - MySQLDatabase* MySQLDatabase::OpenDatabaseConnection(const MySQLParameters& parameters) + class MySQLDatabase::Factory : public RetryDatabaseFactory { - class Factory : public RetryDatabaseFactory - { - private: - const MySQLParameters& parameters_; + private: + MySQLParameters parameters_; - protected: - virtual IDatabase* TryOpen() - { - std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_)); - db->Open(); - db->ExecuteMultiLines("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE", false); - return db.release(); - } + protected: + virtual IDatabase* TryOpen() + { + std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_)); + db->Open(); + db->ExecuteMultiLines("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE", false); + return db.release(); + } - public: - explicit Factory(const MySQLParameters& parameters) : - RetryDatabaseFactory(parameters.GetMaxConnectionRetries(), - parameters.GetConnectionRetryInterval()), - parameters_(parameters) - { - } - }; + public: + explicit Factory(const MySQLParameters& parameters) : + RetryDatabaseFactory(parameters.GetMaxConnectionRetries(), + parameters.GetConnectionRetryInterval()), + parameters_(parameters) + { + } + }; + + IDatabaseFactory* MySQLDatabase::CreateDatabaseFactory(const MySQLParameters& parameters) + { + return new Factory(parameters); + } + + + MySQLDatabase* MySQLDatabase::CreateDatabaseConnection(const MySQLParameters& parameters) + { Factory factory(parameters); return dynamic_cast<MySQLDatabase*>(factory.Open()); }