导航菜单

页面标题

页面副标题

Kreate v1.5.0 - JavaSocketOptionsKt.java 源代码

正在查看: Kreate v1.5.0 应用的 JavaSocketOptionsKt.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package io.ktor.network.sockets;

import io.ktor.network.sockets.SocketOptions;
import java.net.SocketOption;
import java.net.StandardSocketOptions;
import java.nio.channels.DatagramChannel;
import java.nio.channels.SelectableChannel;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import kotlin.Metadata;
import kotlin.UByte;
import kotlin.jvm.internal.Intrinsics;

@Metadata(d1 = {"\u0000\u001c\n\u0002\u0018\u0002\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0002\b\u0005\u001a\u0013\u0010\u0002\u001a\u00020\u0001*\u00020\u0000H\u0000¢\u0006\u0004\b\u0002\u0010\u0003\u001a\u001b\u0010\u0006\u001a\u00020\u0001*\u00020\u00002\u0006\u0010\u0005\u001a\u00020\u0004H\u0000¢\u0006\u0004\b\u0006\u0010\u0007\"\u001a\u0010\t\u001a\u00020\b8\u0000X\u0080\u0004¢\u0006\f\n\u0004\b\t\u0010\n\u001a\u0004\b\u000b\u0010\f¨\u0006\r"}, d2 = {"Ljava/nio/channels/SelectableChannel;", "", "nonBlocking", "(Ljava/nio/channels/SelectableChannel;)V", "Lio/ktor/network/sockets/SocketOptions;", "options", "assignOptions", "(Ljava/nio/channels/SelectableChannel;Lio/ktor/network/sockets/SocketOptions;)V", "", "java7NetworkApisAvailable", "Z", "getJava7NetworkApisAvailable", "()Z", "ktor-network"}, k = 2, mv = {2, 1, 0}, xi = 48)
public final class JavaSocketOptionsKt {
    private static final boolean java7NetworkApisAvailable;

    public static final boolean getJava7NetworkApisAvailable() {
        return java7NetworkApisAvailable;
    }

    static {
        boolean z;
        try {
            Class.forName("java.net.StandardSocketOptions");
            z = true;
        } catch (ClassNotFoundException unused) {
            z = false;
        }
        java7NetworkApisAvailable = z;
    }

    public static final void nonBlocking(SelectableChannel selectableChannel) {
        Intrinsics.checkNotNullParameter(selectableChannel, "<this>");
        selectableChannel.configureBlocking(false);
    }

    public static final void assignOptions(SelectableChannel selectableChannel, SocketOptions options) {
        SocketOption socketOption;
        SocketOption socketOption2;
        SocketOption socketOption3;
        SocketOption socketOption4;
        SocketOption socketOption5;
        SocketOption socketOption6;
        SocketOption socketOption7;
        SocketOption socketOption8;
        SocketOption socketOption9;
        SocketOption socketOption10;
        SocketOption socketOption11;
        SocketOption socketOption12;
        SocketOption socketOption13;
        Intrinsics.checkNotNullParameter(selectableChannel, "<this>");
        Intrinsics.checkNotNullParameter(options, "options");
        if (selectableChannel instanceof SocketChannel) {
            if (!TypeOfService.m237equalsimpl0(options.getTypeOfService(), TypeOfService.INSTANCE.m247getUNDEFINEDzieKYfw())) {
                if (java7NetworkApisAvailable) {
                    socketOption13 = StandardSocketOptions.IP_TOS;
                    ((SocketChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption13), (SocketOption<SocketOption>) ((SocketOption) Integer.valueOf(options.getTypeOfService() & UByte.MAX_VALUE)));
                } else {
                    ((SocketChannel) selectableChannel).socket().setTrafficClass(options.getTypeOfService() & UByte.MAX_VALUE);
                }
            }
            if (options.getReuseAddress()) {
                if (java7NetworkApisAvailable) {
                    socketOption12 = StandardSocketOptions.SO_REUSEADDR;
                    ((SocketChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption12), (SocketOption<SocketOption>) ((SocketOption) true));
                } else {
                    ((SocketChannel) selectableChannel).socket().setReuseAddress(true);
                }
            }
            if (options.getReusePort()) {
                SocketOptionsPlatformCapabilities.INSTANCE.setReusePort((SocketChannel) selectableChannel);
            }
            if (options instanceof SocketOptions.PeerSocketOptions) {
                SocketOptions.PeerSocketOptions peerSocketOptions = (SocketOptions.PeerSocketOptions) options;
                Integer valueOf = Integer.valueOf(peerSocketOptions.getReceiveBufferSize());
                if (valueOf.intValue() <= 0) {
                    valueOf = null;
                }
                if (valueOf != null) {
                    int intValue = valueOf.intValue();
                    if (java7NetworkApisAvailable) {
                        socketOption11 = StandardSocketOptions.SO_RCVBUF;
                        ((SocketChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption11), (SocketOption<SocketOption>) ((SocketOption) Integer.valueOf(intValue)));
                    } else {
                        ((SocketChannel) selectableChannel).socket().setReceiveBufferSize(intValue);
                    }
                }
                Integer valueOf2 = Integer.valueOf(peerSocketOptions.getSendBufferSize());
                if (valueOf2.intValue() <= 0) {
                    valueOf2 = null;
                }
                if (valueOf2 != null) {
                    int intValue2 = valueOf2.intValue();
                    if (java7NetworkApisAvailable) {
                        socketOption10 = StandardSocketOptions.SO_SNDBUF;
                        ((SocketChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption10), (SocketOption<SocketOption>) ((SocketOption) Integer.valueOf(intValue2)));
                    } else {
                        ((SocketChannel) selectableChannel).socket().setSendBufferSize(intValue2);
                    }
                }
            }
            if (options instanceof SocketOptions.TCPClientSocketOptions) {
                SocketOptions.TCPClientSocketOptions tCPClientSocketOptions = (SocketOptions.TCPClientSocketOptions) options;
                Integer valueOf3 = Integer.valueOf(tCPClientSocketOptions.getLingerSeconds());
                if (valueOf3.intValue() < 0) {
                    valueOf3 = null;
                }
                if (valueOf3 != null) {
                    int intValue3 = valueOf3.intValue();
                    if (java7NetworkApisAvailable) {
                        socketOption9 = StandardSocketOptions.SO_LINGER;
                        ((SocketChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption9), (SocketOption<SocketOption>) ((SocketOption) Integer.valueOf(intValue3)));
                    } else {
                        ((SocketChannel) selectableChannel).socket().setSoLinger(true, intValue3);
                    }
                }
                Boolean keepAlive = tCPClientSocketOptions.getKeepAlive();
                if (keepAlive != null) {
                    boolean booleanValue = keepAlive.booleanValue();
                    if (java7NetworkApisAvailable) {
                        socketOption8 = StandardSocketOptions.SO_KEEPALIVE;
                        ((SocketChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption8), (SocketOption<SocketOption>) ((SocketOption) keepAlive));
                    } else {
                        ((SocketChannel) selectableChannel).socket().setKeepAlive(booleanValue);
                    }
                }
                if (java7NetworkApisAvailable) {
                    socketOption7 = StandardSocketOptions.TCP_NODELAY;
                    ((SocketChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption7), (SocketOption<SocketOption>) ((SocketOption) Boolean.valueOf(tCPClientSocketOptions.getNoDelay())));
                } else {
                    ((SocketChannel) selectableChannel).socket().setTcpNoDelay(tCPClientSocketOptions.getNoDelay());
                }
            }
        }
        if (selectableChannel instanceof ServerSocketChannel) {
            if (options.getReuseAddress()) {
                if (java7NetworkApisAvailable) {
                    socketOption6 = StandardSocketOptions.SO_REUSEADDR;
                    ((ServerSocketChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption6), (SocketOption<SocketOption>) ((SocketOption) true));
                } else {
                    ((ServerSocketChannel) selectableChannel).socket().setReuseAddress(true);
                }
            }
            if (options.getReusePort()) {
                SocketOptionsPlatformCapabilities.INSTANCE.setReusePort((ServerSocketChannel) selectableChannel);
            }
        }
        if (selectableChannel instanceof DatagramChannel) {
            if (!TypeOfService.m237equalsimpl0(options.getTypeOfService(), TypeOfService.INSTANCE.m247getUNDEFINEDzieKYfw())) {
                if (java7NetworkApisAvailable) {
                    socketOption5 = StandardSocketOptions.IP_TOS;
                    ((DatagramChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption5), (SocketOption<SocketOption>) ((SocketOption) Integer.valueOf(options.getTypeOfService() & UByte.MAX_VALUE)));
                } else {
                    ((DatagramChannel) selectableChannel).socket().setTrafficClass(options.getTypeOfService() & UByte.MAX_VALUE);
                }
            }
            if (options.getReuseAddress()) {
                if (java7NetworkApisAvailable) {
                    socketOption4 = StandardSocketOptions.SO_REUSEADDR;
                    ((DatagramChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption4), (SocketOption<SocketOption>) ((SocketOption) true));
                } else {
                    ((DatagramChannel) selectableChannel).socket().setReuseAddress(true);
                }
            }
            if (options.getReusePort()) {
                SocketOptionsPlatformCapabilities.INSTANCE.setReusePort((DatagramChannel) selectableChannel);
            }
            if (options instanceof SocketOptions.UDPSocketOptions) {
                if (java7NetworkApisAvailable) {
                    socketOption3 = StandardSocketOptions.SO_BROADCAST;
                    ((DatagramChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption3), (SocketOption<SocketOption>) ((SocketOption) Boolean.valueOf(((SocketOptions.UDPSocketOptions) options).getBroadcast())));
                } else {
                    ((DatagramChannel) selectableChannel).socket().setBroadcast(((SocketOptions.UDPSocketOptions) options).getBroadcast());
                }
            }
            if (options instanceof SocketOptions.PeerSocketOptions) {
                SocketOptions.PeerSocketOptions peerSocketOptions2 = (SocketOptions.PeerSocketOptions) options;
                Integer valueOf4 = Integer.valueOf(peerSocketOptions2.getReceiveBufferSize());
                if (valueOf4.intValue() <= 0) {
                    valueOf4 = null;
                }
                if (valueOf4 != null) {
                    int intValue4 = valueOf4.intValue();
                    if (java7NetworkApisAvailable) {
                        socketOption2 = StandardSocketOptions.SO_RCVBUF;
                        ((DatagramChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption2), (SocketOption<SocketOption>) ((SocketOption) Integer.valueOf(intValue4)));
                    } else {
                        ((DatagramChannel) selectableChannel).socket().setReceiveBufferSize(intValue4);
                    }
                }
                Integer valueOf5 = Integer.valueOf(peerSocketOptions2.getSendBufferSize());
                Integer num = valueOf5.intValue() > 0 ? valueOf5 : null;
                if (num != null) {
                    int intValue5 = num.intValue();
                    if (!java7NetworkApisAvailable) {
                        ((DatagramChannel) selectableChannel).socket().setSendBufferSize(intValue5);
                    } else {
                        socketOption = StandardSocketOptions.SO_SNDBUF;
                        ((DatagramChannel) selectableChannel).setOption((SocketOption<SocketOption<SocketOption>>) ((SocketOption<SocketOption>) socketOption), (SocketOption<SocketOption>) ((SocketOption) Integer.valueOf(intValue5)));
                    }
                }
            }
        }
    }
}