From 842e37f7372fbfaf7cc5aa422e5c20a28f5d5d61 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 15 Mar 2011 16:27:03 +0200 Subject: Change shared_ptr callback interface to work in mt-environment --- odb/mysql/connection-factory.cxx | 10 +++++----- odb/mysql/connection-factory.hxx | 6 ++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/odb/mysql/connection-factory.cxx b/odb/mysql/connection-factory.cxx index 2d86b82..bef21ce 100644 --- a/odb/mysql/connection-factory.cxx +++ b/odb/mysql/connection-factory.cxx @@ -226,7 +226,7 @@ namespace odb } } - void connection_pool_factory:: + bool connection_pool_factory:: release (pooled_connection* c) { c->clear (); @@ -249,6 +249,8 @@ namespace odb if (waiters_ != 0) cond_.signal (); + + return !keep; } // @@ -264,13 +266,11 @@ namespace odb shared_base::callback_ = &callback_; } - void connection_pool_factory::pooled_connection:: + bool connection_pool_factory::pooled_connection:: zero_counter (void* arg) { pooled_connection* c (static_cast (arg)); - - if (c->pool_) - c->pool_->release (c); + return c->pool_ ? c->pool_->release (c) : true; } } } diff --git a/odb/mysql/connection-factory.hxx b/odb/mysql/connection-factory.hxx index 43d6f9f..eb7380c 100644 --- a/odb/mysql/connection-factory.hxx +++ b/odb/mysql/connection-factory.hxx @@ -119,7 +119,7 @@ namespace odb pooled_connection (database_type&, connection_pool_factory*); private: - static void + static bool zero_counter (void*); private: @@ -133,7 +133,9 @@ namespace odb typedef std::vector > connections; private: - void + // Return true if the connection should be deleted, false otherwise. + // + bool release (pooled_connection*); private: -- cgit v1.1