AnCH Framework 0.1
Another C++ Hack Framework
 
Loading...
Searching...
No Matches
sqlConnectionFactory.hpp
1/*
2 ANCH Framework: ANother C++ Hack is a C++ framework based on C++11 standard
3 Copyright (C) 2012 Vincent Lachenal
4
5 This file is part of ANCH Framework.
6
7 ANCH Framework is free software: you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 ANCH Framework is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with ANCH Framework. If not, see <http://www.gnu.org/licenses/>.
19*/
20#pragma once
21
22#include "sql/connection.hpp"
23#include "sql/sqlException.hpp"
24
25#include "resourcePool.hpp"
26#include "singleton.hpp"
27
28#include <string>
29#include <map>
30
31
32namespace anch::sql {
33
43 extern std::shared_ptr<Connection> make_shared_connection(const SqlConnectionConfiguration& config);
44
46 using SqlConnectionPool = anch::ResourcePool<Connection, SqlConnectionConfiguration, make_shared_connection>;
47
55 class SqlConnectionFactory: public anch::Singleton<SqlConnectionFactory> {
57
58 // Attributes +
59 private:
61 std::map<std::string, SqlConnectionConfiguration> _configs;
62
64 std::map<std::string, SqlConnectionPool* > _pools;
65 // Attributes -
66
67 // Constructors +
68 private:
73 SqlConnectionFactory();
74
80 SqlConnectionFactory(const SqlConnectionFactory& other) = delete;
81 // Constructors -
82
83 // Destructor +
84 private:
88 virtual ~SqlConnectionFactory();
89 // Destructor -
90
91 // Methods +
92 public:
100 Connection* createConnection(const std::string& name);
101
109 SqlConnectionPool& getPool(const std::string& name);
110 // Methods -
111
112 };
113
114}
Meyers' singleton implementation.
Definition singleton.hpp:34
SQL connection virtual class.
Definition connection.hpp:71
SqlConnectionPool & getPool(const std::string &name)
Connection * createConnection(const std::string &name)
SQL namespace.
Definition clauses.hpp:26
std::shared_ptr< Connection > make_shared_connection(const SqlConnectionConfiguration &config)
anch::ResourcePool< Connection, SqlConnectionConfiguration, make_shared_connection > SqlConnectionPool
Definition sqlConnectionFactory.hpp:46
SQL database connection configuration.
Definition connection.hpp:39