func applyChannelOption()

in Sources/NIOTransportServices/TCPOptions+SocketChannelOption.swift [23:52]


    func applyChannelOption(option: ChannelOptions.Types.SocketOption, value: SocketOptionValue) throws {
        switch (option.level, option.name) {
        case (IPPROTO_TCP, TCP_NODELAY):
            self.noDelay = value != 0
        case (IPPROTO_TCP, TCP_NOPUSH):
            self.noPush = value != 0
        case (IPPROTO_TCP, TCP_NOOPT):
            self.noOptions = value != 0
        case (IPPROTO_TCP, TCP_KEEPCNT):
            self.keepaliveCount = Int(value)
        case (IPPROTO_TCP, TCP_KEEPALIVE):
            self.keepaliveIdle = Int(value)
        case (IPPROTO_TCP, TCP_KEEPINTVL):
            self.keepaliveInterval = Int(value)
        case (IPPROTO_TCP, TCP_MAXSEG):
            self.maximumSegmentSize = Int(value)
        case (IPPROTO_TCP, TCP_CONNECTIONTIMEOUT):
            self.connectionTimeout = Int(value)
        case (IPPROTO_TCP, TCP_RXT_CONNDROPTIME):
            self.connectionDropTime = Int(value)
        case (IPPROTO_TCP, TCP_RXT_FINDROP):
            self.retransmitFinDrop = value != 0
        case (IPPROTO_TCP, TCP_SENDMOREACKS):
            self.disableAckStretching = value != 0
        case (SOL_SOCKET, SO_KEEPALIVE):
            self.enableKeepalive = value != 0
        default:
            throw NIOTSErrors.UnsupportedSocketOption(optionValue: option)
        }
    }