Home / Class/ NetUtilSubstitutions Class — netty Architecture

NetUtilSubstitutions Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  d09badc4_18f8_e480_4aa7_c96aa0dbb310["NetUtilSubstitutions"]
  57f5862a_d0d4_2cbc_571e_8864156d87d0["NetUtilSubstitutions.java"]
  d09badc4_18f8_e480_4aa7_c96aa0dbb310 -->|defined in| 57f5862a_d0d4_2cbc_571e_8864156d87d0
  efdd3c68_9747_2f37_b504_5e7c6ed3f2ab["NetUtilSubstitutions()"]
  d09badc4_18f8_e480_4aa7_c96aa0dbb310 -->|method| efdd3c68_9747_2f37_b504_5e7c6ed3f2ab

Relationship Graph

Source Code

common/src/main/java/io/netty/util/NetUtilSubstitutions.java lines 28–112

@TargetClass(NetUtil.class)
final class NetUtilSubstitutions {
    private NetUtilSubstitutions() {
    }

    @Alias
    @InjectAccessors(NetUtilLocalhost4Accessor.class)
    public static Inet4Address LOCALHOST4;

    @Alias
    @InjectAccessors(NetUtilLocalhost6Accessor.class)
    public static Inet6Address LOCALHOST6;

    @Alias
    @InjectAccessors(NetUtilLocalhostAccessor.class)
    public static InetAddress LOCALHOST;

    @Alias
    @InjectAccessors(NetUtilNetworkInterfacesAccessor.class)
    public static Collection<NetworkInterface> NETWORK_INTERFACES;

    private static final class NetUtilLocalhost4Accessor {
        static Inet4Address get() {
            // using https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
            return NetUtilLocalhost4LazyHolder.LOCALHOST4;
        }

        static void set(Inet4Address ignored) {
            // a no-op setter to avoid exceptions when NetUtil is initialized at run-time
        }
    }

    private static final class NetUtilLocalhost4LazyHolder {
        private static final Inet4Address LOCALHOST4 = NetUtilInitializations.createLocalhost4();
    }

    private static final class NetUtilLocalhost6Accessor {
        static Inet6Address get() {
            // using https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
            return NetUtilLocalhost6LazyHolder.LOCALHOST6;
        }

        static void set(Inet6Address ignored) {
            // a no-op setter to avoid exceptions when NetUtil is initialized at run-time
        }
    }

    private static final class NetUtilLocalhost6LazyHolder {
        private static final Inet6Address LOCALHOST6 = NetUtilInitializations.createLocalhost6();
    }

    private static final class NetUtilLocalhostAccessor {
        static InetAddress get() {
            // using https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
            return NetUtilLocalhostLazyHolder.LOCALHOST;
        }

        static void set(InetAddress ignored) {
            // a no-op setter to avoid exceptions when NetUtil is initialized at run-time
        }
    }

    private static final class NetUtilLocalhostLazyHolder {
        private static final InetAddress LOCALHOST = NetUtilInitializations
                .determineLoopback(NetUtilNetworkInterfacesLazyHolder.NETWORK_INTERFACES,
                        NetUtilLocalhost4LazyHolder.LOCALHOST4, NetUtilLocalhost6LazyHolder.LOCALHOST6)
                .address();
    }

    private static final class NetUtilNetworkInterfacesAccessor {
        static Collection<NetworkInterface> get() {
            // using https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
            return NetUtilNetworkInterfacesLazyHolder.NETWORK_INTERFACES;
        }

        static void set(Collection<NetworkInterface> ignored) {
            // a no-op setter to avoid exceptions when NetUtil is initialized at run-time
        }
    }

    private static final class NetUtilNetworkInterfacesLazyHolder {

Frequently Asked Questions

What is the NetUtilSubstitutions class?
NetUtilSubstitutions is a class in the netty codebase, defined in common/src/main/java/io/netty/util/NetUtilSubstitutions.java.
Where is NetUtilSubstitutions defined?
NetUtilSubstitutions is defined in common/src/main/java/io/netty/util/NetUtilSubstitutions.java at line 28.

Analyze Your Own Codebase

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

Try Supermodel Free