package com.provectus.kafka.ui.emitter; import com.provectus.kafka.ui.config.ClustersProperties; import java.time.Duration; import java.util.Optional; import java.util.function.Supplier; public class PollingSettings { private static final Duration DEFAULT_POLL_TIMEOUT = Duration.ofMillis(1_000); private final Duration pollTimeout; private final Supplier throttlerSupplier; public static PollingSettings create(ClustersProperties.Cluster cluster, ClustersProperties clustersProperties) { var pollingProps = Optional.ofNullable(clustersProperties.getPolling()) .orElseGet(ClustersProperties.PollingProperties::new); var pollTimeout = pollingProps.getPollTimeoutMs() != null ? Duration.ofMillis(pollingProps.getPollTimeoutMs()) : DEFAULT_POLL_TIMEOUT; return new PollingSettings( pollTimeout, PollingThrottler.throttlerSupplier(cluster) ); } public static PollingSettings createDefault() { return new PollingSettings( DEFAULT_POLL_TIMEOUT, PollingThrottler::noop ); } private PollingSettings(Duration pollTimeout, Supplier throttlerSupplier) { this.pollTimeout = pollTimeout; this.throttlerSupplier = throttlerSupplier; } public Duration getPollTimeout() { return pollTimeout; } public PollingThrottler getPollingThrottler() { return throttlerSupplier.get(); } }