diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-10-15 13:17:30 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-10-19 11:38:24 +0200 |
commit | 1e78bdc724e95898c04a3409b0b192aa7f77780b (patch) | |
tree | d26ae47ae9956612b5973f536219f0c9b455db03 /odb/connection.hxx | |
parent | 5b0430fdf4617b396e462872d438a663b174a3a8 (diff) |
Implement early connection release
Diffstat (limited to 'odb/connection.hxx')
-rw-r--r-- | odb/connection.hxx | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/odb/connection.hxx b/odb/connection.hxx index b4a9d5b..f1cb41a 100644 --- a/odb/connection.hxx +++ b/odb/connection.hxx @@ -123,6 +123,12 @@ namespace odb virtual ~connection (); + // Recycle the connection to be used by another thread. This call + // invalidates uncached prepared queries. + // + void + recycle (); + protected: connection (database_type&); @@ -132,13 +138,13 @@ namespace odb struct query_; virtual void - cache_query_ (details::shared_ptr<prepared_query_impl> pq, + cache_query_ (prepared_query_impl* pq, const std::type_info& ti, void* params, const std::type_info* params_info, void (*params_deleter) (void*)); - details::shared_ptr<prepared_query_impl> + prepared_query_impl* lookup_query_ (const char* name, const std::type_info& ti, void** params, // out @@ -170,10 +176,29 @@ namespace odb prepared_map_type prepared_map_; + void + clear_prepared_map (); + protected: database_type& database_; tracer_type* tracer_; + // Active query result list. + // + protected: + friend class result_impl; + result_impl* results_; + + void + invalidate_results (); + + // Prepared but uncached query list (cached ones are stored in + // prepared_map_). + // + protected: + friend class prepared_query_impl; + prepared_query_impl* prepared_queries_; + protected: friend class transaction; tracer_type* transaction_tracer_; |