createPoolElement method
Defaults: calls createConnection.
Implementation
@override
FutureOr<C?> createPoolElement({bool force = false}) {
if (poolAliveElementsSize < maxConnections || force) {
if (_creatingConnectionsCount > 3) {
var yield1 = _yieldByCreatingConnections();
var yield2 = _yieldByCreatingConnectionsYield();
final yieldMs = yield1 + yield2;
++_creatingConnectionsYieldCount;
return Future.delayed(Duration(milliseconds: yieldMs), () {
--_creatingConnectionsYieldCount;
var conn = catchFromPopulatedPool();
if (conn == null) {
//print('!!! yieldMs: $yield1 + $yield2 = $yieldMs >> _creatingConnectionsCount: $_creatingConnectionsCount > _creatingConnectionsYeldCount: $_creatingConnectionsYieldCount');
if (poolAliveElementsSize < maxConnections || force) {
super.createPoolElement(force: force);
return _createPoolElementImpl();
} else {
return null;
}
}
return conn.resolveMapped((conn) {
if (conn != null) return conn;
if (poolAliveElementsSize < maxConnections || force) {
super.createPoolElement(force: force);
return _createPoolElementImpl();
} else {
return null;
}
});
});
} else {
super.createPoolElement(force: force);
return _createPoolElementImpl();
}
} else {
return null;
}
}