Class RED


  • public class RED
    extends Protocol
    Implementation of Random Early Drop: messages are discarded when the bundler's queue in the transport nears exhaustion. See Floyd and Van Jacobsen's paper for details.
    Since:
    5.0.0, 4.2.2
    Author:
    Bela Ban
    • Field Detail

      • enabled

        protected boolean enabled
      • queue_capacity

        protected int queue_capacity
      • min_threshold

        protected double min_threshold
      • min

        protected long min
      • max_threshold

        protected double max_threshold
      • max

        protected long max
      • avg_queue_size

        protected double avg_queue_size
      • weight_factor

        protected double weight_factor
      • dropped_msgs

        protected final java.util.concurrent.atomic.LongAdder dropped_msgs
      • total_msgs

        protected final java.util.concurrent.atomic.LongAdder total_msgs
      • bundler

        protected Bundler bundler
      • lock

        protected final java.util.concurrent.locks.Lock lock
      • span

        protected long span
      • weight

        protected double weight
    • Constructor Detail

      • RED

        public RED()
    • Method Detail

      • isEnabled

        public boolean isEnabled()
      • setEnabled

        public RED setEnabled​(boolean e)
      • getMinThreshold

        public double getMinThreshold()
      • getDroppedMessages

        public long getDroppedMessages()
      • getTotalMessages

        public long getTotalMessages()
      • getDropRate

        public double getDropRate()
      • start

        public void start()
                   throws java.lang.Exception
        Description copied from class: Protocol
        This method is called on a JChannel.connect(String). Starts work. Protocols are connected and queues are ready to receive events. Will be called from bottom to top. This call will replace the START and START_OK events.
        Overrides:
        start in class Protocol
        Throws:
        java.lang.Exception - Thrown if protocol cannot be started successfully. This will cause the ProtocolStack to fail, so JChannel.connect(String) will throw an exception
      • down

        public java.lang.Object down​(Message msg)
        Description copied from class: Protocol
        A message is sent down the stack. Protocols may examine the message and do something (e.g. add a header) with it before passing it down.
        Overrides:
        down in class Protocol
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • computeAverage

        protected double computeAverage​(double old_avg,
                                        int new_queue_size)
      • computeDropProbability

        protected double computeDropProbability​(double avg)
        Computes a probability P with which the message should get dropped. min_threshold < avg < max_threshold. Probability increases linearly with min moving toward max
      • drop

        protected boolean drop​(double avg)
      • checkRange

        protected static double checkRange​(double val,
                                           double min,
                                           double max,
                                           java.lang.String name)