Home / Class/ LinuxSocket Class — netty Architecture

LinuxSocket Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  d4234a66_3b23_bb74_6392_7b4eca8428c6["LinuxSocket"]
  30eddeb2_3b08_8376_06d0_a3a8e180330c["LinuxSocket.java"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|defined in| 30eddeb2_3b08_8376_06d0_a3a8e180330c
  e7ee6e9e_71aa_96bc_e1b6_41026f0157ad["LinuxSocket()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| e7ee6e9e_71aa_96bc_e1b6_41026f0157ad
  c6f001d0_1f17_bd74_3a58_90fdc83c5bdb["SocketProtocolFamily()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| c6f001d0_1f17_bd74_3a58_90fdc83c5bdb
  fa534ac5_ebb6_4d64_bee4_a99bbbe02361["sendmmsg()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| fa534ac5_ebb6_4d64_bee4_a99bbbe02361
  4bd7e1ef_ff10_b733_0066_4ceef281a932["recvmmsg()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| 4bd7e1ef_ff10_b733_0066_4ceef281a932
  70f27af3_2cb6_5c38_b9f1_407c873644d8["recvmsg()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| 70f27af3_2cb6_5c38_b9f1_407c873644d8
  cb5e717e_fde3_41f4_2c7b_96ae9e61588a["setTimeToLive()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| cb5e717e_fde3_41f4_2c7b_96ae9e61588a
  2ca251d5_1ef6_c101_ef60_5810f4c805e1["setInterface()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| 2ca251d5_1ef6_c101_ef60_5810f4c805e1
  f99f40dd_7c0a_a584_bdb5_61505165f617["setNetworkInterface()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| f99f40dd_7c0a_a584_bdb5_61505165f617
  8b9702d2_5728_1385_c3b3_a3b939411574["InetAddress()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| 8b9702d2_5728_1385_c3b3_a3b939411574
  9db13a55_e0da_dcd4_9f9c_caef22e471b5["NetworkInterface()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| 9db13a55_e0da_dcd4_9f9c_caef22e471b5
  01b16067_2cfe_5641_e182_eca4f3e10eec["joinGroup()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| 01b16067_2cfe_5641_e182_eca4f3e10eec
  c4b19d7f_7c52_b232_b137_be9158a33b06["leaveGroup()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| c4b19d7f_7c52_b232_b137_be9158a33b06
  cd5cde44_97e9_e3ba_70b6_c79a1ebeaadd["interfaceIndex()"]
  d4234a66_3b23_bb74_6392_7b4eca8428c6 -->|method| cd5cde44_97e9_e3ba_70b6_c79a1ebeaadd

Relationship Graph

Source Code

transport-classes-epoll/src/main/java/io/netty/channel/epoll/LinuxSocket.java lines 42–508

@UnstableApi
public final class LinuxSocket extends Socket {
    private static final long MAX_UINT32_T = 0xFFFFFFFFL;

    LinuxSocket(int fd) {
        super(fd);
    }

    SocketProtocolFamily family() {
        return ipv6 ? SocketProtocolFamily.INET6 : SocketProtocolFamily.INET;
    }

    int sendmmsg(NativeDatagramPacketArray.NativeDatagramPacket[] msgs,
                               int offset, int len) throws IOException {
        return Native.sendmmsg(intValue(), ipv6, msgs, offset, len);
    }

    int recvmmsg(NativeDatagramPacketArray.NativeDatagramPacket[] msgs,
                 int offset, int len) throws IOException {
        return Native.recvmmsg(intValue(), ipv6, msgs, offset, len);
    }

    int recvmsg(NativeDatagramPacketArray.NativeDatagramPacket msg) throws IOException {
        return Native.recvmsg(intValue(), ipv6, msg);
    }

    void setTimeToLive(int ttl) throws IOException {
        setTimeToLive(intValue(), ttl);
    }

    void setInterface(InetAddress address) throws IOException {
        final NativeInetAddress a = NativeInetAddress.newInstance(address);
        setInterface(intValue(), ipv6, a.address(), a.scopeId(), interfaceIndex(address));
    }

    void setNetworkInterface(NetworkInterface netInterface) throws IOException {
        InetAddress address = deriveInetAddress(netInterface, family() == SocketProtocolFamily.INET6);
        if (address.equals(family() == SocketProtocolFamily.INET ? Native.INET_ANY : Native.INET6_ANY)) {
            throw new IOException("NetworkInterface does not support " + family());
        }
        final NativeInetAddress nativeAddress = NativeInetAddress.newInstance(address);
        setInterface(intValue(), ipv6, nativeAddress.address(), nativeAddress.scopeId(), interfaceIndex(netInterface));
    }

    InetAddress getInterface() throws IOException {
        NetworkInterface inf = getNetworkInterface();
        if (inf != null) {
            Enumeration<InetAddress> addresses = SocketUtils.addressesFromNetworkInterface(inf);
            if (addresses.hasMoreElements()) {
                return addresses.nextElement();
            }
        }
        return null;
    }

    NetworkInterface getNetworkInterface() throws IOException {
        int ret = getInterface(intValue(), ipv6);
        if (ipv6) {
            return NetworkInterface.getByIndex(ret);
        }
        InetAddress address = inetAddress(ret);
        return address != null ? NetworkInterface.getByInetAddress(address) : null;
    }

    private static InetAddress inetAddress(int value) {
        byte[] var1 = {
                (byte) (value >>> 24 & 255),
                (byte) (value >>> 16 & 255),
                (byte) (value >>> 8 & 255),
                (byte) (value & 255)
        };

        try {
            return InetAddress.getByAddress(var1);
        } catch (UnknownHostException ignore) {
            return null;
        }
    }

    void joinGroup(InetAddress group, NetworkInterface netInterface, InetAddress source) throws IOException {
        final NativeInetAddress g = NativeInetAddress.newInstance(group);

Frequently Asked Questions

What is the LinuxSocket class?
LinuxSocket is a class in the netty codebase, defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/LinuxSocket.java.
Where is LinuxSocket defined?
LinuxSocket is defined in transport-classes-epoll/src/main/java/io/netty/channel/epoll/LinuxSocket.java at line 42.

Analyze Your Own Codebase

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

Try Supermodel Free