Mercurial > hg > orthanc-databases
comparison 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 |
comparison
equal
deleted
inserted
replaced
254:8a4ce70f456a | 255:d663d9e44f8d |
---|---|
323 { | 323 { |
324 database_.ReleaseAdvisoryLock(lock_); | 324 database_.ReleaseAdvisoryLock(lock_); |
325 } | 325 } |
326 | 326 |
327 | 327 |
328 PostgreSQLDatabase* PostgreSQLDatabase::OpenDatabaseConnection(const PostgreSQLParameters& parameters) | 328 class PostgreSQLDatabase::Factory : public RetryDatabaseFactory |
329 { | 329 { |
330 class Factory : public RetryDatabaseFactory | 330 private: |
331 { | 331 PostgreSQLParameters parameters_; |
332 private: | 332 |
333 const PostgreSQLParameters& parameters_; | 333 protected: |
334 | 334 virtual IDatabase* TryOpen() |
335 protected: | 335 { |
336 virtual IDatabase* TryOpen() | 336 std::unique_ptr<PostgreSQLDatabase> db(new PostgreSQLDatabase(parameters_)); |
337 { | 337 db->Open(); |
338 std::unique_ptr<PostgreSQLDatabase> db(new PostgreSQLDatabase(parameters_)); | 338 return db.release(); |
339 db->Open(); | 339 } |
340 return db.release(); | 340 |
341 } | 341 public: |
342 | 342 explicit Factory(const PostgreSQLParameters& parameters) : |
343 public: | 343 RetryDatabaseFactory(parameters.GetMaxConnectionRetries(), |
344 explicit Factory(const PostgreSQLParameters& parameters) : | 344 parameters.GetConnectionRetryInterval()), |
345 RetryDatabaseFactory(parameters.GetMaxConnectionRetries(), | 345 parameters_(parameters) |
346 parameters.GetConnectionRetryInterval()), | 346 { |
347 parameters_(parameters) | 347 } |
348 { | 348 }; |
349 } | 349 |
350 }; | 350 |
351 | 351 IDatabaseFactory* PostgreSQLDatabase::CreateDatabaseFactory(const PostgreSQLParameters& parameters) |
352 { | |
353 return new Factory(parameters); | |
354 } | |
355 | |
356 | |
357 PostgreSQLDatabase* PostgreSQLDatabase::CreateDatabaseConnection(const PostgreSQLParameters& parameters) | |
358 { | |
352 Factory factory(parameters); | 359 Factory factory(parameters); |
353 return dynamic_cast<PostgreSQLDatabase*>(factory.Open()); | 360 return dynamic_cast<PostgreSQLDatabase*>(factory.Open()); |
354 } | 361 } |
355 } | 362 } |