quickDiscoverClients method

Stream<DiscoveredClient> quickDiscoverClients({
  1. Duration timeout = const Duration(seconds: 5),
  2. Duration searchInterval = const Duration(seconds: 10),
  3. String? query,
  4. bool unique = true,
})

Implementation

Stream<DiscoveredClient> quickDiscoverClients(
    {Duration timeout: const Duration(seconds: 5),
    Duration searchInterval: const Duration(seconds: 10),
    String? query,
    bool unique: true}) async* {
  if (_sockets.isEmpty) {
    await start();
  }

  var seen = Set<String?>();

  if (timeout.inMicroseconds != 0) {
    search(query);
    Future.delayed(timeout, () {
      stop();
    });
  } else if (searchInterval.inMicroseconds != 0) {
    search(query);
    _discoverySearchTimer = Timer.periodic(searchInterval, (_) {
      search(query);
    });
  }

  await for (var client in clients) {
    if (unique && seen.contains(client.usn)) {
      continue;
    }

    seen.add(client.usn);
    yield client;
  }
}