base/common/src/main/com/thesett/common/throttle/BaseThrottle.java
public long timeToThrottleNanos()
    {
        long now = System.nanoTime();
        long remainingNanos = (cycleTimeNanos + lastCheckTimeNanos) - now;

        if ((remainingNanos <= 0))
        {
            firstCheckCall = false;
            lastCheckTimeNanos = now;

            return remainingNanos;
        }
        else if (firstCheckCall)
        {
            firstCheckCall = false;
            lastCheckTimeNanos = now;

            return 0;
        }
        else
        {
            return remainingNanos;
        }
    }
public long timeToThrottleNanos()
    {
        long now = System.nanoTime();
        long remainingNanos = (cycleTimeNanos + lastCheckTimeNanos) - now;

        if ((remainingNanos <= 0))
        {
            firstCheckCall = false;
            lastCheckTimeNanos = now;

            return remainingNanos;
        }
        else if (firstCheckCall)
        {
            firstCheckCall = false;
            lastCheckTimeNanos = now;

            return 0;
        }
        else
        {
            return remainingNanos;
        }
    }
public long timeToThrottleNanos ( ) { long now = System . nanoTime ( ) ; long remainingNanos = ( cycleTimeNanos + lastCheckTimeNanos ) - now ; if ( ( remainingNanos <= 0 ) ) { firstCheckCall = false ; lastCheckTimeNanos = now ; return remainingNanos ; } else if ( firstCheckCall ) { firstCheckCall = false ; lastCheckTimeNanos = now ; return 0 ; } else { return remainingNanos ; } }
Checks but does not enforce the throttle rate. When this method is called, it checks if a length of time greater
than that equal to the inverse of the throttling rate has passed since it was last called and returned <tt>
true</tt>. If the length of time still to elapse to the next throttle allow point is zero or less, this method
will return a negative value, if there is still time to pass until the throttle allow point, this method will
return a positive value indicating the amount of time still to pass. A thread can wait for that period of time
before rechecking the throttle condition.

@return The length of time since or still to elaps to the next throttle allow point. A negative value indicates
that the throttle time has passed and a positive time indicates that there is still time to pass before
it is reached. The units are in nanoseconds.
Checks but does not enforce the throttle rate . When this method is called it checks if a length of time greater than that equal to the inverse of the throttling rate has passed since it was last called and returned <tt > true< / tt > . If the length of time still to elapse to the next throttle allow point is zero or less this method will return a negative value if there is still time to pass until the throttle allow point this method will return a positive value indicating the amount of time still to pass . A thread can wait for that period of time before rechecking the throttle condition .