Class IoEventQueueThrottle

  • All Implemented Interfaces:
    java.util.EventListener, IoEventQueueHandler

    public class IoEventQueueThrottle
    extends java.lang.Object
    implements IoEventQueueHandler
    Throttles incoming or outgoing events.
    • Field Detail

      • LOGGER

        private static final org.slf4j.Logger LOGGER
        A logger for this class
      • eventSizeEstimator

        private final IoEventSizeEstimator eventSizeEstimator
        The event size estimator instance
      • threshold

        private volatile int threshold
      • lock

        private final java.lang.Object lock
      • counter

        private final java.util.concurrent.atomic.AtomicInteger counter
        The number of events we hold
      • waiters

        private int waiters
    • Constructor Detail

      • IoEventQueueThrottle

        public IoEventQueueThrottle()
        Creates a new IoEventQueueThrottle instance
      • IoEventQueueThrottle

        public IoEventQueueThrottle​(int threshold)
        Creates a new IoEventQueueThrottle instance
        Parameters:
        threshold - The events threshold
      • IoEventQueueThrottle

        public IoEventQueueThrottle​(IoEventSizeEstimator eventSizeEstimator,
                                    int threshold)
        Creates a new IoEventQueueThrottle instance
        Parameters:
        eventSizeEstimator - The IoEventSizeEstimator instance
        threshold - The events threshold
    • Method Detail

      • getEventSizeEstimator

        public IoEventSizeEstimator getEventSizeEstimator()
        Returns:
        The IoEventSizeEstimator instance
      • getThreshold

        public int getThreshold()
        Returns:
        The events threshold
      • getCounter

        public int getCounter()
        Returns:
        The number of events currently held
      • setThreshold

        public void setThreshold​(int threshold)
        Sets the events threshold
        Parameters:
        threshold - The events threshold
      • accept

        public boolean accept​(java.lang.Object source,
                              IoEvent event)
        Specified by:
        accept in interface IoEventQueueHandler
        Parameters:
        source - The source of event
        event - The received event
        Returns:
        true if and only if the specified >event is allowed to be offered to the event queue. The event is dropped if false is returned.
      • offered

        public void offered​(java.lang.Object source,
                            IoEvent event)
        Invoked after the specified event has been offered to the event queue.
        Specified by:
        offered in interface IoEventQueueHandler
        Parameters:
        source - The source of event
        event - The received event
      • polled

        public void polled​(java.lang.Object source,
                           IoEvent event)
        Invoked after the specified event has been polled from the event queue.
        Specified by:
        polled in interface IoEventQueueHandler
        Parameters:
        source - The source of event
        event - The received event
      • estimateSize

        private int estimateSize​(IoEvent event)
      • logState

        private void logState()
      • block

        protected void block()
      • unblock

        protected void unblock()