static <T> void prepareDecoupler(PVWriterDirector<T> director, PVWriterConfiguration<T> writerConfiguration) { ScannerParameters scannerParameters = new ScannerParameters() .writerDirector(director) .scannerExecutor(PVManager.getReadScannerExecutorService()) .maxDuration(Duration.ofMillis(100)); scannerParameters.type(ScannerParameters.Type.PASSIVE); SourceDesiredRateDecoupler rateDecoupler = scannerParameters.build(); director.setScanner(rateDecoupler); rateDecoupler.start(); }
static <T> void prepareDecoupler(PVDirector<T> director, PVReaderConfiguration<T> readConfiguration) { ScannerParameters scannerParameters = new ScannerParameters() .readerDirector(director) .scannerExecutor(PVManager.getReadScannerExecutorService()) .maxDuration(readConfiguration.maxRate); if (readConfiguration.aggregatedFunction instanceof Collector || readConfiguration.aggregatedFunction instanceof ValueCache) { scannerParameters.type(ScannerParameters.Type.PASSIVE); } else { scannerParameters.type(ScannerParameters.Type.ACTIVE); } SourceDesiredRateDecoupler rateDecoupler = scannerParameters.build(); readConfiguration.pv.setDirector(director); director.setScanner(rateDecoupler); director.connectReadExpression(readConfiguration.aggregatedPVExpression); rateDecoupler.start(); }