Class SimpleRateGate

    • Constructor Detail

      • 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 Detail

      • 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.