discover method

  1. @override
Future<EndPoint> discover()
override

Discover EventStoreDB host based on given settings.

Implementation

@override
Future<EndPoint> discover() async {
  for (var attempt = 1; attempt <= settings.maxDiscoverAttempts; ++attempt) {
    try {
      final request = _discover();
      final endpoint = await (settings.gossipTimeout.isInfinite
          ? request
          : request.timeout(
              settings.gossipTimeout,
            ));
      if (endpoint != null) {
        return endpoint;
      }
    } on Exception {
      await Future<void>.delayed(
        settings.discoveryInterval,
      );
    }
  }
  throw DiscoveryException(settings.maxDiscoverAttempts);
}