Class SimpleRateGate

java.lang.Object
com.sportradar.livedata.sdk.common.rategate.RateGateBase
com.sportradar.livedata.sdk.common.rategate.SimpleRateGate
All Implemented Interfaces:
RateGate

public class SimpleRateGate extends RateGateBase implements RateGate
  • Constructor Details

    • SimpleRateGate

      public SimpleRateGate(int number, org.joda.time.Duration duration, ScheduledExecutorService scheduler, String rateGateName)
      Construct a SimpleRateGate.
      Parameters:
      number - - number of elements
      duration - - that can pass in this period
      scheduler - - task scheduler
      rateGateName - limiter name for easier identification
  • Method Details

    • waitToProceed

      public void waitToProceed(int amount) throws InterruptedException
      Description copied from interface: RateGate
      Block when configured rate-limits are exceeded.
      Specified by:
      waitToProceed in interface RateGate
      Parameters:
      amount - - number of elements
      Throws:
      InterruptedException - when somebody interrupted the waiting
    • waitToProceed

      public boolean waitToProceed(int amount, org.joda.time.Duration wait) throws InterruptedException
      Block when configured rate-limits are exceeded.
      Specified by:
      waitToProceed in interface RateGate
      Specified by:
      waitToProceed in class RateGateBase
      Parameters:
      amount - - number of elements
      wait - - the maximum amount of time to wait, negative means infinity
      Returns:
      true when we passed the gate; false when a timeout occurred
      Throws:
      InterruptedException - when somebody interrupted the waiting
    • howLongToWait

      public org.joda.time.Duration howLongToWait(int amount)
      Approximately how long will I have to wait?
      Specified by:
      howLongToWait in interface RateGate
      Specified by:
      howLongToWait in class RateGateBase
      Parameters:
      amount - - number of elements
      Returns:
      - a non-negative amount of time, zero means no need to wait.