PollingSettings.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.provectus.kafka.ui.emitter;
  2. import com.provectus.kafka.ui.config.ClustersProperties;
  3. import java.time.Duration;
  4. import java.util.Optional;
  5. import java.util.function.Supplier;
  6. public class PollingSettings {
  7. private static final Duration DEFAULT_POLL_TIMEOUT = Duration.ofMillis(1_000);
  8. private final Duration pollTimeout;
  9. private final Supplier<PollingThrottler> throttlerSupplier;
  10. public static PollingSettings create(ClustersProperties.Cluster cluster,
  11. ClustersProperties clustersProperties) {
  12. var pollingProps = Optional.ofNullable(clustersProperties.getPolling())
  13. .orElseGet(ClustersProperties.PollingProperties::new);
  14. var pollTimeout = pollingProps.getPollTimeoutMs() != null
  15. ? Duration.ofMillis(pollingProps.getPollTimeoutMs())
  16. : DEFAULT_POLL_TIMEOUT;
  17. return new PollingSettings(
  18. pollTimeout,
  19. PollingThrottler.throttlerSupplier(cluster)
  20. );
  21. }
  22. public static PollingSettings createDefault() {
  23. return new PollingSettings(
  24. DEFAULT_POLL_TIMEOUT,
  25. PollingThrottler::noop
  26. );
  27. }
  28. private PollingSettings(Duration pollTimeout,
  29. Supplier<PollingThrottler> throttlerSupplier) {
  30. this.pollTimeout = pollTimeout;
  31. this.throttlerSupplier = throttlerSupplier;
  32. }
  33. public Duration getPollTimeout() {
  34. return pollTimeout;
  35. }
  36. public PollingThrottler getPollingThrottler() {
  37. return throttlerSupplier.get();
  38. }
  39. }