diff options
Diffstat (limited to 'src/mongo/client/connpool.cpp')
-rw-r--r-- | src/mongo/client/connpool.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/mongo/client/connpool.cpp b/src/mongo/client/connpool.cpp index 457f4c0de5a..79f0aa9801c 100644 --- a/src/mongo/client/connpool.cpp +++ b/src/mongo/client/connpool.cpp @@ -467,6 +467,31 @@ namespace mongo { // ------ ScopedDbConnection ------ + ScopedDbConnection::ScopedDbConnection(const std::string& host, double socketTimeout) + : _host(host), + _conn(globalConnPool.get(host, socketTimeout)), + _socketTimeout(socketTimeout) { + + _setSocketTimeout(); + } + + ScopedDbConnection::ScopedDbConnection(const ConnectionString& host, double socketTimeout) + : _host(host.toString()), + _conn(globalConnPool.get(host, socketTimeout)), + _socketTimeout(socketTimeout) { + + _setSocketTimeout(); + } + + void ScopedDbConnection::done() { + if (!_conn) { + return; + } + + globalConnPool.release(_host, _conn); + _conn = NULL; + } + void ScopedDbConnection::_setSocketTimeout(){ if( ! _conn ) return; if( _conn->type() == ConnectionString::MASTER ) @@ -498,7 +523,7 @@ namespace mongo { } void ScopedDbConnection::clearPool() { - pool.clear(); + globalConnPool.clear(); } AtomicInt32 AScopedConnection::_numConnections; |