コード例 #1
0
ファイル: connection_pool.cpp プロジェクト: alabid/mongo
void ConnectionPool::_cleanUpOlderThan_inlock(Date_t now, ConnectionList* hostConns) {
    ConnectionList::iterator iter = hostConns->begin();
    while (iter != hostConns->end()) {
        if (_shouldKeepConnection(now, *iter)) {
            ++iter;
        } else {
            _destroyConnection_inlock(hostConns, iter++);
        }
    }
}
コード例 #2
0
ファイル: connection_pool.cpp プロジェクト: ArgusTek/mongo
    void ConnectionPool::releaseConnection(ConnectionList::iterator iter, const Date_t now) {
        boost::lock_guard<boost::mutex> lk(_mutex);
        if (!_shouldKeepConnection(now, *iter)) {
            _destroyConnection_inlock(&_inUseConnections, iter);
            return;
        }

        ConnectionList& hostConns = _connections[iter->conn->getServerHostAndPort()];
        _cleanUpOlderThan_inlock(now, &hostConns);
        hostConns.splice(hostConns.begin(), _inUseConnections, iter);
        _lastUsedHosts[iter->conn->getServerHostAndPort()] = now;
    }