TestHealthCheckStrategy.java

package redis.clients.jedis.mcf;

import java.util.function.Function;

import redis.clients.jedis.Endpoint;

public class TestHealthCheckStrategy implements HealthCheckStrategy {

  private int interval;
  private int timeout;
  private int probes;
  private int delay;
  private Function<Endpoint, HealthStatus> healthCheck;
  private ProbingPolicy policy;

  public TestHealthCheckStrategy(int interval, int timeout, int probes, ProbingPolicy policy,
      int delay, Function<Endpoint, HealthStatus> healthCheck) {
    this.interval = interval;
    this.timeout = timeout;
    this.probes = probes;
    this.delay = delay;
    this.healthCheck = healthCheck;
    this.policy = policy;
  }

  public TestHealthCheckStrategy(HealthCheckStrategy.Config config,
      Function<Endpoint, HealthStatus> healthCheck) {
    this(config.getInterval(), config.getTimeout(), config.getNumProbes(), config.getPolicy(),
        config.getDelayInBetweenProbes(), healthCheck);
  }

  public TestHealthCheckStrategy(Function<Endpoint, HealthStatus> healthCheck) {
    this(HealthCheckStrategy.Config.create(), healthCheck);
  }

  @Override
  public int getInterval() {
    return interval;
  }

  @Override
  public int getTimeout() {
    return timeout;
  }

  @Override
  public int getNumProbes() {
    return probes;
  }

  @Override
  public ProbingPolicy getPolicy() {
    return policy;
  }

  @Override
  public int getDelayInBetweenProbes() {
    return delay;
  }

  @Override
  public HealthStatus doHealthCheck(Endpoint endpoint) {
    return healthCheck.apply(endpoint);
  }

};