Class DefaultInvocationGate

  • All Implemented Interfaces:
    InvocationGate

    public class DefaultInvocationGate
    extends java.lang.Object
    implements InvocationGate
    This class serves as a gateway for invocations of a "costly" operation on a critical execution path.
    • Field Detail

      • MASK_DECREASE_RIGHT_SHIFT_COUNT

        static final int MASK_DECREASE_RIGHT_SHIFT_COUNT
        See Also:
        Constant Field Values
      • mask

        private volatile long mask
      • invocationCounter

        private long invocationCounter
      • MASK_INCREASE_THRESHOLD

        private static final long MASK_INCREASE_THRESHOLD
        See Also:
        Constant Field Values
      • MASK_DECREASE_THRESHOLD

        private static final long MASK_DECREASE_THRESHOLD
        See Also:
        Constant Field Values
      • minDelayThreshold

        private long minDelayThreshold
      • maxDelayThreshold

        private long maxDelayThreshold
      • lowerLimitForMaskMatch

        long lowerLimitForMaskMatch
      • upperLimitForNoMaskMatch

        long upperLimitForNoMaskMatch
    • Constructor Detail

      • DefaultInvocationGate

        public DefaultInvocationGate()
      • DefaultInvocationGate

        public DefaultInvocationGate​(long minDelayThreshold,
                                     long maxDelayThreshold,
                                     long currentTime)
    • Method Detail

      • isTooSoon

        public final boolean isTooSoon​(long currentTime)
        Description copied from interface: InvocationGate
        The caller of this method can decide to skip further work if the returned value is true. Implementations should be able to give a reasonable answer even if current time date is unavailable.
        Specified by:
        isTooSoon in interface InvocationGate
        Returns:
        if true, caller should skip further work
      • updateLimits

        private void updateLimits​(long currentTime)
      • getMask

        long getMask()
      • increaseMask

        private void increaseMask()
      • decreaseMask

        private void decreaseMask()
      • getInvocationCounter

        public long getInvocationCounter()