NIOPosix: reorganise ECN constants, define for Windows (#2181)

Reorganise the ECN constants to colocate the definitions for the
different platforms.  Define the constants for Windows as the platform
does not provide them in the system headers.
This commit is contained in:
Saleem Abdulrasool 2022-06-09 23:12:26 -07:00 committed by GitHub
parent 055043e151
commit 57d41b502c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 24 additions and 14 deletions

View File

@ -289,11 +289,6 @@ internal enum Posix {
static let SHUT_RD: CInt = CInt(Darwin.SHUT_RD)
static let SHUT_WR: CInt = CInt(Darwin.SHUT_WR)
static let SHUT_RDWR: CInt = CInt(Darwin.SHUT_RDWR)
static let IPTOS_ECN_NOTECT: CInt = CNIODarwin_IPTOS_ECN_NOTECT
static let IPTOS_ECN_MASK: CInt = CNIODarwin_IPTOS_ECN_MASK
static let IPTOS_ECN_ECT0: CInt = CNIODarwin_IPTOS_ECN_ECT0
static let IPTOS_ECN_ECT1: CInt = CNIODarwin_IPTOS_ECN_ECT1
static let IPTOS_ECN_CE: CInt = CNIODarwin_IPTOS_ECN_CE
static let IP_RECVPKTINFO: CInt = CNIODarwin.IP_RECVPKTINFO
static let IP_PKTINFO: CInt = CNIODarwin.IP_PKTINFO
static let IPV6_RECVPKTINFO: CInt = CNIODarwin_IPV6_RECVPKTINFO
@ -304,15 +299,6 @@ internal enum Posix {
static let SHUT_RD: CInt = CInt(Glibc.SHUT_RD)
static let SHUT_WR: CInt = CInt(Glibc.SHUT_WR)
static let SHUT_RDWR: CInt = CInt(Glibc.SHUT_RDWR)
#if os(Android)
static let IPTOS_ECN_NOTECT: CInt = CInt(CNIOLinux.IPTOS_ECN_NOTECT)
#else
static let IPTOS_ECN_NOTECT: CInt = CInt(CNIOLinux.IPTOS_ECN_NOT_ECT)
#endif
static let IPTOS_ECN_MASK: CInt = CInt(CNIOLinux.IPTOS_ECN_MASK)
static let IPTOS_ECN_ECT0: CInt = CInt(CNIOLinux.IPTOS_ECN_ECT0)
static let IPTOS_ECN_ECT1: CInt = CInt(CNIOLinux.IPTOS_ECN_ECT1)
static let IPTOS_ECN_CE: CInt = CInt(CNIOLinux.IPTOS_ECN_CE)
static let IP_RECVPKTINFO: CInt = CInt(CNIOLinux.IP_PKTINFO)
static let IP_PKTINFO: CInt = CInt(CNIOLinux.IP_PKTINFO)
static let IPV6_RECVPKTINFO: CInt = CInt(CNIOLinux.IPV6_RECVPKTINFO)
@ -332,6 +318,30 @@ internal enum Posix {
}
#endif
#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS)
static let IPTOS_ECN_NOTECT: CInt = CNIODarwin_IPTOS_ECN_NOTECT
static let IPTOS_ECN_MASK: CInt = CNIODarwin_IPTOS_ECN_MASK
static let IPTOS_ECN_ECT0: CInt = CNIODarwin_IPTOS_ECN_ECT0
static let IPTOS_ECN_ECT1: CInt = CNIODarwin_IPTOS_ECN_ECT1
static let IPTOS_ECN_CE: CInt = CNIODarwin_IPTOS_ECN_CE
#elseif os(Linux) || os(FreeBSD) || os(Android)
#if os(Android)
static let IPTOS_ECN_NOTECT: CInt = CInt(CNIOLinux.IPTOS_ECN_NOTECT)
#else
static let IPTOS_ECN_NOTECT: CInt = CInt(CNIOLinux.IPTOS_ECN_NOT_ECT)
#endif
static let IPTOS_ECN_MASK: CInt = CInt(CNIOLinux.IPTOS_ECN_MASK)
static let IPTOS_ECN_ECT0: CInt = CInt(CNIOLinux.IPTOS_ECN_ECT0)
static let IPTOS_ECN_ECT1: CInt = CInt(CNIOLinux.IPTOS_ECN_ECT1)
static let IPTOS_ECN_CE: CInt = CInt(CNIOLinux.IPTOS_ECN_CE)
#elseif os(Windows)
static let IPTOS_ECN_NOTECT: CInt = CInt(0x00)
static let IPTOS_ECN_MASK: CInt = CInt(0x03)
static let IPTOS_ECN_ECT0: CInt = CInt(0x02)
static let IPTOS_ECN_ECT1: CInt = CInt(0x01)
static let IPTOS_ECN_CE: CInt = CInt(0x03)
#endif
#if !os(Windows)
@inline(never)
internal static func shutdown(descriptor: CInt, how: Shutdown) throws {