waitForDataMatch method

Future<bool> waitForDataMatch(
  1. Pattern dataMatcher, {
  2. Duration? timeout,
})

Waits for dataMatcher with a timeout.

Implementation

Future<bool> waitForDataMatch(Pattern dataMatcher,
    {Duration? timeout}) async {
  if (asString.contains(dataMatcher)) {
    return true;
  }

  timeout ??= Duration(seconds: 1);
  var waitTimeout = timeout;

  var init = DateTime.now().millisecondsSinceEpoch;

  while (true) {
    var receivedData = await waitData(timeout: waitTimeout);

    if (receivedData) {
      var match = asString.contains(dataMatcher);
      if (match) return true;
    }

    var now = DateTime.now().millisecondsSinceEpoch;
    var elapsedTime = now - init;
    var remainingTime = timeout.inMilliseconds - elapsedTime;

    if (remainingTime < 1) break;

    waitTimeout = Duration(milliseconds: remainingTime);
  }

  return false;
}