waitForVmServiceEvent function
Future<bool>
waitForVmServiceEvent({
- required Stream<
Map< events,String, dynamic> > - required VmEventMatcher matches,
- required Duration timeout,
Waits for the first VM event that satisfies matches.
Implementation
Future<bool> waitForVmServiceEvent({
required Stream<Map<String, dynamic>> events,
required VmEventMatcher matches,
required Duration timeout,
}) async {
final completer = Completer<bool>();
late final StreamSubscription<Map<String, dynamic>> subscription;
Timer? timer;
void complete(bool value) {
if (completer.isCompleted) return;
completer.complete(value);
}
subscription = events.listen(
(event) {
if (matches(event)) {
complete(true);
}
},
onError: (_) => complete(false),
onDone: () => complete(false),
);
timer = Timer(timeout, () => complete(false));
try {
return await completer.future;
} finally {
timer.cancel();
await subscription.cancel();
}
}