comparison 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
comparison
equal deleted inserted replaced
225:94c9908e6aca 226:a4918d57435c
19 **/ 19 **/
20 20
21 21
22 #include "MySQLDatabase.h" 22 #include "MySQLDatabase.h"
23 23
24 #include "../Common/ImplicitTransaction.h"
25 #include "../Common/Integer64Value.h"
26 #include "../Common/RetryDatabaseFactory.h"
24 #include "MySQLResult.h" 27 #include "MySQLResult.h"
25 #include "MySQLStatement.h" 28 #include "MySQLStatement.h"
26 #include "MySQLTransaction.h" 29 #include "MySQLTransaction.h"
27 #include "../Common/ImplicitTransaction.h"
28 #include "../Common/Integer64Value.h"
29 30
30 #include <Compatibility.h> // For std::unique_ptr<> 31 #include <Compatibility.h> // For std::unique_ptr<>
31 #include <Logging.h> 32 #include <Logging.h>
32 #include <OrthancException.h> 33 #include <OrthancException.h>
33 #include <Toolbox.h> 34 #include <Toolbox.h>
610 611
611 MySQLDatabase::TransientAdvisoryLock::~TransientAdvisoryLock() 612 MySQLDatabase::TransientAdvisoryLock::~TransientAdvisoryLock()
612 { 613 {
613 database_.ReleaseAdvisoryLock(lock_); 614 database_.ReleaseAdvisoryLock(lock_);
614 } 615 }
616
617
618 MySQLDatabase* MySQLDatabase::OpenDatabaseConnection(const MySQLParameters& parameters)
619 {
620 class Factory : public RetryDatabaseFactory
621 {
622 private:
623 const MySQLParameters& parameters_;
624
625 protected:
626 virtual IDatabase* TryOpen()
627 {
628 std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_));
629 db->Open();
630 return db.release();
631 }
632
633 public:
634 Factory(const MySQLParameters& parameters) :
635 RetryDatabaseFactory(parameters.GetMaxConnectionRetries(),
636 parameters.GetConnectionRetryInterval()),
637 parameters_(parameters)
638 {
639 }
640 };
641
642 Factory factory(parameters);
643 return dynamic_cast<MySQLDatabase*>(factory.Open());
644 }
615 } 645 }