From 3c7f89796275ff535c190c4a58775da48f76cb46 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 2 May 2015 18:17:29 +0100 Subject: Refactor, more OO, less hacky bind --- project2/sql/mockDatabase.cpp | 4 ++-- project2/sql/mockDatabase.h | 3 ++- project2/sql/mockDatasource.cpp | 4 ++-- project2/sql/mockDatasource.h | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/project2/sql/mockDatabase.cpp b/project2/sql/mockDatabase.cpp index 259dfd6..80322cf 100644 --- a/project2/sql/mockDatabase.cpp +++ b/project2/sql/mockDatabase.cpp @@ -3,7 +3,6 @@ #include #include #include -#include MockDatabase::MockDatabase(const std::string & name) : mockName(name) @@ -35,7 +34,7 @@ MockDatabase::PlaySchemaScripts(const std::vector & ss) } delete conn; Logger()->messagebf(LOG_DEBUG, "%s initialized", mockName); - MockConnectionLoader::mocks[mockName] = boost::bind(&MockDatabase::openConnection, this); + MockConnectionLoader::mocks[mockName] = this; } catch (...) { if (conn->inTx()) { @@ -72,5 +71,6 @@ MockServerDatabase::DropDatabase() const { Logger()->messagebf(LOG_INFO, "Creating new database %s", testDbName); master->execute("DROP DATABASE IF EXISTS " + testDbName); + MockConnectionLoader::mocks.erase(mockName); } diff --git a/project2/sql/mockDatabase.h b/project2/sql/mockDatabase.h index 49e49a8..5cf42f2 100644 --- a/project2/sql/mockDatabase.h +++ b/project2/sql/mockDatabase.h @@ -11,11 +11,12 @@ class MockDatabase { MockDatabase(const std::string & mockName); virtual ~MockDatabase(); + virtual DB::Connection * openConnection() const = 0; + protected: virtual void CreateNewDatabase() const = 0; virtual void PlaySchemaScripts(const std::vector & ss) const; virtual void DropDatabase() const = 0; - virtual DB::Connection * openConnection() const = 0; const std::string mockName; }; diff --git a/project2/sql/mockDatasource.cpp b/project2/sql/mockDatasource.cpp index 06648ad..df5d325 100644 --- a/project2/sql/mockDatasource.cpp +++ b/project2/sql/mockDatasource.cpp @@ -4,12 +4,12 @@ DECLARE_CUSTOM_COMPONENT_LOADER("mock", T, MockConnectionLoader, ConnectionLoader); -std::map MockConnectionLoader::mocks; +std::map MockConnectionLoader::mocks; unsigned int MockConnectionLoader::mocked = 0; DB::Connection * MockConnectionLoader::create(const std::string & n) const { - return safeMapFind(mocks, n)->second(); + return safeMapFind(mocks, n)->second->openConnection(); } diff --git a/project2/sql/mockDatasource.h b/project2/sql/mockDatasource.h index facc8a5..ee1e976 100644 --- a/project2/sql/mockDatasource.h +++ b/project2/sql/mockDatasource.h @@ -2,14 +2,14 @@ #define MOCKDATASOURCE_H #include +#include "mockDatabase.h" class MockConnectionLoader : public ConnectionLoader { public: DB::Connection * create(const std::string &) const; static unsigned int mocked; - typedef boost::function ConnectionCreator; - static std::map mocks; + static std::map mocks; }; #endif -- cgit v1.2.3