Home / Class/ TrafficControl Class — netty Architecture

TrafficControl Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  795b1031_a0d2_a2ba_68c6_7259fb499d83["TrafficControl"]
  8d0fcd48_f1f1_ba4b_7278_eea1f73c73a3["TrafficControl.java"]
  795b1031_a0d2_a2ba_68c6_7259fb499d83 -->|defined in| 8d0fcd48_f1f1_ba4b_7278_eea1f73c73a3
  02fe0bb1_26c1_e9e1_737a_2186480cfbbd["TrafficControl()"]
  795b1031_a0d2_a2ba_68c6_7259fb499d83 -->|method| 02fe0bb1_26c1_e9e1_737a_2186480cfbbd
  08762b1b_354b_c7f4_9219_8adff8ff4475["isAvailable()"]
  795b1031_a0d2_a2ba_68c6_7259fb499d83 -->|method| 08762b1b_354b_c7f4_9219_8adff8ff4475
  8974480f_0e74_4ac7_eab7_2b2e4ca97cee["delay()"]
  795b1031_a0d2_a2ba_68c6_7259fb499d83 -->|method| 8974480f_0e74_4ac7_eab7_2b2e4ca97cee

Relationship Graph

Source Code

transport-udt/src/test/java/io/netty/test/udt/util/TrafficControl.java lines 31–79

public final class TrafficControl {

    private static final InternalLogger log = InternalLoggerFactory.getInstance(TrafficControl.class);

    private TrafficControl() {
    }

    private static final String TC_DELAY = "sudo tc qdisc add dev %s root netem delay %sms limit %s";
    private static final String TC_RESET = "sudo tc qdisc del dev %s root";

    /**
     * verify if traffic control is available
     */
    public static boolean isAvailable() {
        try {
            final int millis = 100;
            final int margin = 20;
            delay(0);
            final long time1 = UnitHelp.ping("localhost");
            delay(millis);
            final long time2 = UnitHelp.ping("localhost");
            delay(0);
            final long time3 = UnitHelp.ping("localhost");
            return time2 >= time1 + millis - margin
                    && time2 >= time3 + millis - margin;
        } catch (final Throwable e) {
            log.debug("", e);
            return false;
        }
    }

    /**
     * Introduce round-trip delay on local host
     * @param time - delay in milliseconds; use zero to remove delay.
     */
    public static void delay(final int time) throws Exception {
        checkPositiveOrZero(time, "time");
        final int delay = time / 2;
        if (delay == 0) {
            UnitHelp.process(String.format(TC_RESET, "lo"));
        } else {
            /** extend packet buffer queue to avoid packet loss due to latency */
            final int limit = 1024 * 1024;
            UnitHelp.process(String.format(TC_RESET, "lo"));
            UnitHelp.process(String.format(TC_DELAY, "lo", delay, limit));
        }
    }

}

Frequently Asked Questions

What is the TrafficControl class?
TrafficControl is a class in the netty codebase, defined in transport-udt/src/test/java/io/netty/test/udt/util/TrafficControl.java.
Where is TrafficControl defined?
TrafficControl is defined in transport-udt/src/test/java/io/netty/test/udt/util/TrafficControl.java at line 31.

Analyze Your Own Codebase

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

Try Supermodel Free