openConnection<C extends DBConnection> static method

Future<C?> openConnection<C extends DBConnection>(
  1. DBConnectionCredential credential,
  2. Future<C?> opener(
    1. DBConnectionCredential credential
    ), {
  3. Duration retryInterval = const Duration(seconds: 1),
  4. int maxRetries = 10,
})

Implementation

static Future<C?> openConnection<C extends DBConnection>(
    DBConnectionCredential credential,
    Future<C?> Function(DBConnectionCredential credential) opener,
    {Duration retryInterval = const Duration(seconds: 1),
    int maxRetries = 10}) async {
  var retryCount = 0;

  while (retryCount < maxRetries) {
    try {
      var conn = await opener(credential);
      return conn;
    } catch (_) {
      await Future.delayed(retryInterval);
    }

    ++retryCount;
  }

  return null;
}