aboutsummaryrefslogtreecommitdiff
path: root/odb/connection.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/connection.hxx')
-rw-r--r--odb/connection.hxx19
1 files changed, 17 insertions, 2 deletions
diff --git a/odb/connection.hxx b/odb/connection.hxx
index 20cb285..f1f8c3b 100644
--- a/odb/connection.hxx
+++ b/odb/connection.hxx
@@ -26,6 +26,7 @@
namespace odb
{
class transaction_impl;
+ class connection_factory;
class connection;
typedef details::shared_ptr<connection> connection_ptr;
@@ -130,7 +131,7 @@ namespace odb
recycle ();
protected:
- connection (database_type&);
+ connection (connection_factory&);
template <typename T,
database_id DB,
@@ -180,7 +181,7 @@ namespace odb
clear_prepared_map ();
protected:
- database_type& database_;
+ connection_factory& factory_;
tracer_type* tracer_;
// Active query result list.
@@ -203,6 +204,20 @@ namespace odb
friend class transaction;
tracer_type* transaction_tracer_;
};
+
+ class LIBODB_EXPORT connection_factory
+ {
+ public:
+ typedef odb::database database_type;
+
+ connection_factory (): db_ (0) {}
+
+ database_type&
+ database () {return *db_;}
+
+ protected:
+ database_type* db_;
+ };
}
#include <odb/connection.ixx>