Home / Class/ AbstractTrafficShapingHandler Class — netty Architecture

AbstractTrafficShapingHandler Class — netty Architecture

Architecture documentation for the AbstractTrafficShapingHandler class in AbstractTrafficShapingHandler.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  8335ea87_158a_c21f_4d30_8f254caf2ded["AbstractTrafficShapingHandler"]
  b62614b8_ae82_8ab2_7882_d009f6a3229e["AbstractTrafficShapingHandler.java"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|defined in| b62614b8_ae82_8ab2_7882_d009f6a3229e
  1753d837_2eda_6f03_7364_6930c60ade78["setTrafficCounter()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| 1753d837_2eda_6f03_7364_6930c60ade78
  a6c71299_3e4b_5909_cf5f_5a781f8b7e7f["userDefinedWritabilityIndex()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| a6c71299_3e4b_5909_cf5f_5a781f8b7e7f
  af870a34_7c5c_ae27_b2e0_23725f0ebd3a["AbstractTrafficShapingHandler()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| af870a34_7c5c_ae27_b2e0_23725f0ebd3a
  466da63d_b8a6_5d1f_8b96_5fb3f1720da5["configure()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| 466da63d_b8a6_5d1f_8b96_5fb3f1720da5
  23141d75_1ed9_54df_0cbf_060bc5bd1bc2["getWriteLimit()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| 23141d75_1ed9_54df_0cbf_060bc5bd1bc2
  ede81981_ecd2_f2d8_b2db_841b71dc6241["setWriteLimit()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| ede81981_ecd2_f2d8_b2db_841b71dc6241
  c69eb07f_2854_3a3e_861d_c3d2fe327dea["getReadLimit()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| c69eb07f_2854_3a3e_861d_c3d2fe327dea
  14120f0f_9174_cb16_848f_73c92c85119e["setReadLimit()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| 14120f0f_9174_cb16_848f_73c92c85119e
  86636e0d_c63d_3791_1c83_fa49299bf3d7["getCheckInterval()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| 86636e0d_c63d_3791_1c83_fa49299bf3d7
  a7e37903_6c1f_924f_a4e7_4325462241c1["setCheckInterval()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| a7e37903_6c1f_924f_a4e7_4325462241c1
  1e307930_d04a_7a34_7248_2b8c4e8173d5["setMaxTimeWait()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| 1e307930_d04a_7a34_7248_2b8c4e8173d5
  de6b9beb_c183_b1fa_f006_9b1684c76d66["getMaxTimeWait()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| de6b9beb_c183_b1fa_f006_9b1684c76d66
  060c65eb_39bc_03e0_c913_cd392d260e25["getMaxWriteDelay()"]
  8335ea87_158a_c21f_4d30_8f254caf2ded -->|method| 060c65eb_39bc_03e0_c913_cd392d260e25

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/traffic/AbstractTrafficShapingHandler.java lines 52–658

public abstract class AbstractTrafficShapingHandler extends ChannelDuplexHandler {
    private static final InternalLogger logger =
            InternalLoggerFactory.getInstance(AbstractTrafficShapingHandler.class);
    /**
     * Default delay between two checks: 1s
     */
    public static final long DEFAULT_CHECK_INTERVAL = 1000;

   /**
    * Default max delay in case of traffic shaping
    * (during which no communication will occur).
    * Shall be less than TIMEOUT. Here half of "standard" 30s
    */
    public static final long DEFAULT_MAX_TIME = 15000;

    /**
     * Default max size to not exceed in buffer (write only).
     */
    static final long DEFAULT_MAX_SIZE = 4 * 1024 * 1024L;

    /**
     * Default minimal time to wait: 10ms
     */
    static final long MINIMAL_WAIT = 10;

    /**
     * Traffic Counter
     */
    protected TrafficCounter trafficCounter;

    /**
     * Limit in B/s to apply to write
     */
    private volatile long writeLimit;

    /**
     * Limit in B/s to apply to read
     */
    private volatile long readLimit;

    /**
     * Max delay in wait
     */
    protected volatile long maxTime = DEFAULT_MAX_TIME; // default 15 s

    /**
     * Delay between two performance snapshots
     */
    protected volatile long checkInterval = DEFAULT_CHECK_INTERVAL; // default 1 s

    static final AttributeKey<Boolean> READ_SUSPENDED = AttributeKey
            .valueOf(AbstractTrafficShapingHandler.class.getName() + ".READ_SUSPENDED");
    static final AttributeKey<Runnable> REOPEN_TASK = AttributeKey.valueOf(AbstractTrafficShapingHandler.class
            .getName() + ".REOPEN_TASK");

    /**
     * Max time to delay before proposing to stop writing new objects from next handlers
     */
    volatile long maxWriteDelay = 4 * DEFAULT_CHECK_INTERVAL; // default 4 s
    /**
     * Max size in the list before proposing to stop writing new objects from next handlers
     */
    volatile long maxWriteSize = DEFAULT_MAX_SIZE; // default 4MB

    /**
     * Rank in UserDefinedWritability (1 for Channel, 2 for Global TrafficShapingHandler).
     * Set in final constructor. Must be between 1 and 31
     */
    final int userDefinedWritabilityIndex;

    /**
     * Default value for Channel UserDefinedWritability index
     */
    static final int CHANNEL_DEFAULT_USER_DEFINED_WRITABILITY_INDEX = 1;

    /**
     * Default value for Global UserDefinedWritability index
     */
    static final int GLOBAL_DEFAULT_USER_DEFINED_WRITABILITY_INDEX = 2;

    /**

Frequently Asked Questions

What is the AbstractTrafficShapingHandler class?
AbstractTrafficShapingHandler is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/traffic/AbstractTrafficShapingHandler.java.
Where is AbstractTrafficShapingHandler defined?
AbstractTrafficShapingHandler is defined in handler/src/main/java/io/netty/handler/traffic/AbstractTrafficShapingHandler.java at line 52.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free