public ThrottledLollipopScanner()

in rx-central-ble/src/main/java/com/uber/rxcentralble/core/scanners/ThrottledLollipopScanner.java [77:98]


  public ThrottledLollipopScanner(ParsedAdvertisement.Factory parsedAdDataFactory,
                                  long maxScanDurationMs,
                                  long pauseIntervalMs) {
    this.parsedAdDataFactory = parsedAdDataFactory;
    this.scanCallback = getScanCallback();
    this.maxScanDurationMs = maxScanDurationMs;
    this.pauseIntervalMs = pauseIntervalMs;

    this.errorSubject = CompletableSubject.create();
    this.sharedScanData = scanModeRelay
            .switchMap(nextScanMode -> Observable.fromCallable(this::calculateDelay)
                    .switchMap(delay -> Observable.timer(delay, TimeUnit.MILLISECONDS))
                    .map(proceed -> nextScanMode))
            .distinctUntilChanged()
            .switchMap(nextScanMode -> Observable.concat(
                    // Start a (potentially delayed) throttled scan.
                    throttledScan(scanDataRelay, nextScanMode),
                    // Repeat pause followed by throttle scan.
                    intervalScan(scanDataRelay, nextScanMode)))
            .doFinally(this::cleanup)
            .share();
  }