getConnection method
Gets a connection from the pool
Implementation
Future<DatabaseConnection> getConnection() async {
if (_isClosed) {
throw DatabaseConnectionError('Connection pool is closed');
}
// Return available connection if exists
if (_availableConnections.isNotEmpty) {
final conn = _availableConnections.removeFirst();
_activeConnections.add(conn);
return conn;
}
// Create new connection if under limit
if (_activeConnections.length < _maxConnections) {
final conn = DatabaseReader.createConnection(_connectionString);
_activeConnections.add(conn);
return conn;
}
// Wait for a connection to become available
await Future.delayed(Duration(milliseconds: 100));
return getConnection();
}