0001    #if os(Linux)
0002    import Glibc
0003    #else
0004    import Darwin
0005    #endif
0006    
0007    
0008    class SocketManager
Socket.swift:63
        SocketManager.closeRawSocket(rawSocket)
Socket.swift:67
        SocketManager.shutdownRawSocket(rawSocket)
SocketManager.swift:32
                SocketManager.closeRawSocket(rawSocket)
SocketManager.swift:56
            SocketManager.closeRawSocket(rawSocket)
SocketManager.swift:62
            SocketManager.closeRawSocket(rawSocket)
SocketManager.swift:79
        SocketManager.shutdownRawSocket(socket)
SocketServer.swift:17
    let socketManager: SocketManager
SocketServer.swift:32
        socketManager = SocketManager()
{ 0009 0010 func createListenSocket
SocketServer.swift:41
        self.listenSocket = try socketManager.createListenSocket(listenPort)
(port: Int, 0011 pendingConnectionCount: Int32 = SOMAXCONN) throws -> Socket { 0012 0013 let port = UInt16(port) 0014 0015 #if os(Linux) 0016 let socketStream = Int32(SOCK_STREAM.rawValue) 0017 #else 0018 let socketStream = SOCK_STREAM 0019 #endif 0020 0021 let rawSocket = socket(AF_INET, socketStream, 0) 0022 0023 if rawSocket == -1 { 0024 throw SocketError.SocketCreationFailed(Socket.descriptionOfLastError()) 0025 } 0026 0027 var value: Int32 = 1 0028 0029 if setsockopt(rawSocket, SOL_SOCKET, SO_REUSEADDR, 0030 &value, socklen_t(sizeof(Int32))) == -1 { 0031 let details = Socket.descriptionOfLastError() 0032 SocketManager.closeRawSocket(rawSocket) 0033 throw SocketError.SocketSettingReUseAddrFailed(details) 0034 } 0035 0036 Socket.setNoSigPipe(rawSocket) 0037 0038 var socketAddress = sockaddr_in() 0039 socketAddress.sin_family = sa_family_t(AF_INET) 0040 socketAddress.sin_port = Socket.htonsPort(port) 0041 #if os(Linux) 0042 socketAddress.sin_addr = in_addr(s_addr: in_addr_t(0)) 0043 #else 0044 socketAddress.sin_len = __uint8_t(sizeof(sockaddr_in)) 0045 socketAddress.sin_addr = in_addr(s_addr: inet_addr("0.0.0.0")) 0046 #endif 0047 0048 socketAddress.sin_zero = (0, 0, 0, 0, 0, 0, 0, 0) 0049 0050 var bindAddress = sockaddr() 0051 0052 memcpy(&bindAddress, &socketAddress, Int(sizeof(sockaddr_in))) 0053 0054 if bind(rawSocket, &bindAddress, socklen_t(sizeof(sockaddr_in))) == -1 { 0055 let details = Socket.descriptionOfLastError() 0056 SocketManager.closeRawSocket(rawSocket) 0057 throw SocketError.BindFailed(details) 0058 } 0059 0060 if listen(rawSocket, pendingConnectionCount ) == -1 { 0061 let details = Socket.descriptionOfLastError() 0062 SocketManager.closeRawSocket(rawSocket) 0063 throw SocketError.ListenFailed(details) 0064 } 0065 0066 return Socket(rawSocket: rawSocket) 0067 0068 } 0069 0070 class func closeSocket(socket: Socket) { 0071 closeRawSocket(socket.rawSocket) 0072 } 0073 0074 class func shutdownSocket(socket: Socket) { 0075 shutdownRawSocket(socket.rawSocket) 0076 } 0077 0078 class func closeRawSocket
Socket.swift:63
        SocketManager.closeRawSocket(rawSocket)
SocketManager.swift:32
                SocketManager.closeRawSocket(rawSocket)
SocketManager.swift:56
            SocketManager.closeRawSocket(rawSocket)
SocketManager.swift:62
            SocketManager.closeRawSocket(rawSocket)
SocketManager.swift:71
        closeRawSocket(socket.rawSocket)
(socket: Int32) { 0079 SocketManager.shutdownRawSocket(socket) 0080 close(socket) 0081 } 0082 0083 class func shutdownRawSocket
Socket.swift:67
        SocketManager.shutdownRawSocket(rawSocket)
SocketManager.swift:75
        shutdownRawSocket(socket.rawSocket)
SocketManager.swift:79
        SocketManager.shutdownRawSocket(socket)
(socket: Int32) { 0084 #if os(Linux) 0085 shutdown(socket, Int32(SHUT_RDWR)) 0086 #else 0087 Darwin.shutdown(socket, SHUT_RDWR) 0088 #endif 0089 } 0090 0091 } 0092