Mercurial > hg > orthanc-databases
diff Framework/PostgreSQL/PostgreSQLDatabase.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 | cc7af42d4f23 |
line wrap: on
line diff
--- a/Framework/PostgreSQL/PostgreSQLDatabase.cpp Wed Apr 14 15:33:57 2021 +0200 +++ b/Framework/PostgreSQL/PostgreSQLDatabase.cpp Wed Apr 14 17:57:08 2021 +0200 @@ -325,30 +325,37 @@ } - PostgreSQLDatabase* PostgreSQLDatabase::OpenDatabaseConnection(const PostgreSQLParameters& parameters) + class PostgreSQLDatabase::Factory : public RetryDatabaseFactory { - class Factory : public RetryDatabaseFactory + private: + PostgreSQLParameters parameters_; + + protected: + virtual IDatabase* TryOpen() { - private: - const PostgreSQLParameters& parameters_; + std::unique_ptr<PostgreSQLDatabase> db(new PostgreSQLDatabase(parameters_)); + db->Open(); + return db.release(); + } + + public: + explicit Factory(const PostgreSQLParameters& parameters) : + RetryDatabaseFactory(parameters.GetMaxConnectionRetries(), + parameters.GetConnectionRetryInterval()), + parameters_(parameters) + { + } + }; - protected: - virtual IDatabase* TryOpen() - { - std::unique_ptr<PostgreSQLDatabase> db(new PostgreSQLDatabase(parameters_)); - db->Open(); - return db.release(); - } - - public: - explicit Factory(const PostgreSQLParameters& parameters) : - RetryDatabaseFactory(parameters.GetMaxConnectionRetries(), - parameters.GetConnectionRetryInterval()), - parameters_(parameters) - { - } - }; + IDatabaseFactory* PostgreSQLDatabase::CreateDatabaseFactory(const PostgreSQLParameters& parameters) + { + return new Factory(parameters); + } + + + PostgreSQLDatabase* PostgreSQLDatabase::CreateDatabaseConnection(const PostgreSQLParameters& parameters) + { Factory factory(parameters); return dynamic_cast<PostgreSQLDatabase*>(factory.Open()); }