@@ -30,27 +30,26 @@ #import "OFCharacterSet.h" #import "OFLocale.h" #ifdef OF_HAVE_THREADS # import "OFMutex.h" #endif +#import "OFOnce.h" +#import "OFSocket.h" +#import "OFSocket+Private.h" #import "OFString.h" +#ifdef OF_HAVE_THREADS +# import "OFTLSKey.h" +#endif #import "OFException.h" /* For some E* -> WSAE* defines */ #import "OFInitializationFailedException.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFLockFailedException.h" #import "OFOutOfRangeException.h" #import "OFUnlockFailedException.h" -#import "socket.h" -#import "socket_helpers.h" -#ifdef OF_HAVE_THREADS -# import "tlskey.h" -#endif -#import "once.h" - #ifdef OF_AMIGAOS # include #endif #ifdef OF_NINTENDO_3DS @@ -71,13 +70,13 @@ static bool initSuccessful = false; #endif #ifdef OF_AMIGAOS # if defined(OF_HAVE_THREADS) && !defined(OF_MORPHOS) -of_tlskey_t of_socket_base_key; +OFTLSKey OFSocketBaseKey; # ifdef OF_AMIGAOS4 -of_tlskey_t of_socket_interface_key; +OFTLSKey OFSocketInterfaceKey; # endif # else struct Library *SocketBase; # ifdef OF_AMIGAOS4 struct SocketIFace *ISocket = NULL; @@ -86,15 +85,15 @@ #endif #if defined(OF_HAVE_THREADS) && defined(OF_AMIGAOS) && !defined(OF_MORPHOS) OF_CONSTRUCTOR() { - if (of_tlskey_new(&of_socket_base_key) != 0) + if (OFTLSKeyNew(&OFSocketBaseKey) != 0) @throw [OFInitializationFailedException exception]; # ifdef OF_AMIGAOS4 - if (of_tlskey_new(&of_socket_interface_key) != 0) + if (OFTLSKeyNew(&OFSocketInterfaceKey) != 0) @throw [OFInitializationFailedException exception]; # endif } #endif @@ -136,11 +135,11 @@ # if defined(OF_HAVE_THREADS) && (!defined(OF_AMIGAOS) || defined(OF_MORPHOS)) mutex = [[OFMutex alloc] init]; atexit(releaseMutex); # ifdef OF_WII - if (of_spinlock_new(&spinlock) != 0) + if (OFSpinlockNew(&spinlock) != 0) return; # endif # endif initSuccessful = true; @@ -159,27 +158,27 @@ # endif } #endif bool -of_socket_init(void) +OFSocketInit(void) { #if !defined(OF_AMIGAOS) || defined(OF_MORPHOS) || !defined(OF_HAVE_THREADS) - static of_once_t onceControl = OF_ONCE_INIT; - of_once(&onceControl, init); + static OFOnceControl onceControl = OFOnceControlInitValue; + OFOnce(&onceControl, init); return initSuccessful; #else struct Library *socketBase; # ifdef OF_AMIGAOS4 struct SocketIFace *socketInterface; # endif # ifdef OF_AMIGAOS4 - if ((socketInterface = of_tlskey_get(of_socket_interface_key)) != NULL) + if ((socketInterface = OFTLSKeyGet(OFSocketInterfaceKey)) != NULL) # else - if ((socketBase = of_tlskey_get(of_socket_base_key)) != NULL) + if ((socketBase = OFTLSKeyGet(OFSocketBaseKey)) != NULL) # endif return true; if ((socketBase = OpenLibrary("bsdsocket.library", 4)) == NULL) return false; @@ -190,20 +189,20 @@ CloseLibrary(socketBase); return false; } # endif - if (of_tlskey_set(of_socket_base_key, socketBase) != 0) { + if (OFTLSKeySet(OFSocketBaseKey, socketBase) != 0) { CloseLibrary(socketBase); # ifdef OF_AMIGAOS4 DropInterface((struct Interface *)socketInterface); # endif return false; } # ifdef OF_AMIGAOS4 - if (of_tlskey_set(of_socket_interface_key, socketInterface) != 0) { + if (OFTLSKeySet(OFSocketInterfaceKey, socketInterface) != 0) { CloseLibrary(socketBase); DropInterface((struct Interface *)socketInterface); return false; } # endif @@ -212,16 +211,15 @@ #endif } #if defined(OF_HAVE_THREADS) && defined(OF_AMIGAOS) && !defined(OF_MORPHOS) void -of_socket_deinit(void) +OFSocketDeinit(void) { - struct Library *socketBase = of_tlskey_get(of_socket_base_key); + struct Library *socketBase = OFTLSKeyGet(OFSocketBaseKey); # ifdef OF_AMIGAOS4 - struct SocketIFace *socketInterface = - of_tlskey_get(of_socket_interface_key); + struct SocketIFace *socketInterface = OFTLSKeyGet(OFSocketInterfaceKey); if (socketInterface != NULL) DropInterface((struct Interface *)socketInterface); # endif if (socketBase != NULL) @@ -228,11 +226,11 @@ CloseLibrary(socketBase); } #endif int -of_socket_errno() +OFSocketErrNo() { #if defined(OF_WINDOWS) switch (WSAGetLastError()) { case WSAEACCES: return EACCES; @@ -330,11 +328,11 @@ #endif } #ifndef OF_WII int -of_getsockname(of_socket_t sock, struct sockaddr *restrict addr, +OFGetSockName(OFSocketHandle sock, struct sockaddr *restrict addr, socklen_t *restrict addrLen) { int ret; # if defined(OF_HAVE_THREADS) && (!defined(OF_AMIGAOS) || defined(OF_MORPHOS)) @@ -347,31 +345,31 @@ return ret; } #endif -of_socket_address_t -of_socket_address_parse_ipv4(OFString *IPv4, uint16_t port) +OFSocketAddress +OFSocketAddressParseIPv4(OFString *IPv4, uint16_t port) { void *pool = objc_autoreleasePoolPush(); OFCharacterSet *whitespaceCharacterSet = [OFCharacterSet whitespaceCharacterSet]; - of_socket_address_t ret; + OFSocketAddress ret; struct sockaddr_in *addrIn = &ret.sockaddr.in; OFArray OF_GENERIC(OFString *) *components; uint32_t addr; memset(&ret, '\0', sizeof(ret)); - ret.family = OF_SOCKET_ADDRESS_FAMILY_IPV4; + ret.family = OFSocketAddressFamilyIPv4; #if defined(OF_WII) || defined(OF_NINTENDO_3DS) ret.length = 8; #else ret.length = sizeof(ret.sockaddr.in); #endif addrIn->sin_family = AF_INET; - addrIn->sin_port = OF_BSWAP16_IF_LE(port); + addrIn->sin_port = OFToBigEndian16(port); #ifdef OF_WII addrIn->sin_len = ret.length; #endif components = [IPv4 componentsSeparatedByString: @"."]; @@ -386,11 +384,11 @@ if (component.length == 0) @throw [OFInvalidFormatException exception]; if ([component indexOfCharacterFromSet: - whitespaceCharacterSet] != OF_NOT_FOUND) + whitespaceCharacterSet] != OFNotFound) @throw [OFInvalidFormatException exception]; number = component.unsignedLongLongValue; if (number > UINT8_MAX) @@ -397,11 +395,11 @@ @throw [OFInvalidFormatException exception]; addr = (addr << 8) | ((uint32_t)number & 0xFF); } - addrIn->sin_addr.s_addr = OF_BSWAP32_IF_LE(addr); + addrIn->sin_addr.s_addr = OFToBigEndian32(addr); objc_autoreleasePoolPop(pool); return ret; } @@ -410,11 +408,11 @@ parseIPv6Component(OFString *component) { unsigned long long number; if ([component indexOfCharacterFromSet: - [OFCharacterSet whitespaceCharacterSet]] != OF_NOT_FOUND) + [OFCharacterSet whitespaceCharacterSet]] != OFNotFound) @throw [OFInvalidFormatException exception]; number = [component unsignedLongLongValueWithBase: 16]; if (number > UINT16_MAX) @@ -421,32 +419,32 @@ @throw [OFInvalidFormatException exception]; return (uint16_t)number; } -of_socket_address_t -of_socket_address_parse_ipv6(OFString *IPv6, uint16_t port) +OFSocketAddress +OFSocketAddressParseIPv6(OFString *IPv6, uint16_t port) { void *pool = objc_autoreleasePoolPush(); - of_socket_address_t ret; + OFSocketAddress ret; struct sockaddr_in6 *addrIn6 = &ret.sockaddr.in6; size_t doubleColon; memset(&ret, '\0', sizeof(ret)); - ret.family = OF_SOCKET_ADDRESS_FAMILY_IPV6; + ret.family = OFSocketAddressFamilyIPv6; ret.length = sizeof(ret.sockaddr.in6); #ifdef AF_INET6 addrIn6->sin6_family = AF_INET6; #else addrIn6->sin6_family = AF_UNSPEC; #endif - addrIn6->sin6_port = OF_BSWAP16_IF_LE(port); + addrIn6->sin6_port = OFToBigEndian16(port); doubleColon = [IPv6 rangeOfString: @"::"].location; - if (doubleColon != OF_NOT_FOUND) { + if (doubleColon != OFNotFound) { OFString *left = [IPv6 substringToIndex: doubleColon]; OFString *right = [IPv6 substringFromIndex: doubleColon + 2]; OFArray OF_GENERIC(OFString *) *leftComponents; OFArray OF_GENERIC(OFString *) *rightComponents; size_t i; @@ -500,61 +498,61 @@ objc_autoreleasePoolPop(pool); return ret; } -of_socket_address_t -of_socket_address_parse_ip(OFString *IP, uint16_t port) +OFSocketAddress +OFSocketAddressParseIP(OFString *IP, uint16_t port) { - of_socket_address_t ret; + OFSocketAddress ret; @try { - ret = of_socket_address_parse_ipv6(IP, port); + ret = OFSocketAddressParseIPv6(IP, port); } @catch (OFInvalidFormatException *e) { - ret = of_socket_address_parse_ipv4(IP, port); + ret = OFSocketAddressParseIPv4(IP, port); } return ret; } -of_socket_address_t -of_socket_address_ipx(const unsigned char node[IPX_NODE_LEN], uint32_t network, +OFSocketAddress +OFSocketAddressMakeIPX(const unsigned char node[IPX_NODE_LEN], uint32_t network, uint16_t port) { - of_socket_address_t ret; + OFSocketAddress ret; memset(&ret, '\0', sizeof(ret)); - ret.family = OF_SOCKET_ADDRESS_FAMILY_IPX; + ret.family = OFSocketAddressFamilyIPX; ret.length = sizeof(ret.sockaddr.ipx); #ifdef AF_IPX ret.sockaddr.ipx.sipx_family = AF_IPX; #else ret.sockaddr.ipx.sipx_family = AF_UNSPEC; #endif memcpy(ret.sockaddr.ipx.sipx_node, node, IPX_NODE_LEN); - network = OF_BSWAP32_IF_LE(network); + network = OFToBigEndian32(network); memcpy(&ret.sockaddr.ipx.sipx_network, &network, sizeof(ret.sockaddr.ipx.sipx_network)); - ret.sockaddr.ipx.sipx_port = OF_BSWAP16_IF_LE(port); + ret.sockaddr.ipx.sipx_port = OFToBigEndian16(port); return ret; } -of_socket_address_t -of_socket_unix(OFString *path) +OFSocketAddress +OFSocketAddressMakeUNIX(OFString *path) { void *pool = objc_autoreleasePoolPush(); - of_string_encoding_t encoding = [OFLocale encoding]; + OFStringEncoding encoding = [OFLocale encoding]; size_t length = [path cStringLengthWithEncoding: encoding]; - of_socket_address_t ret; + OFSocketAddress ret; if (length > sizeof(ret.sockaddr.un.sun_path)) @throw [OFOutOfRangeException exception]; memset(&ret, '\0', sizeof(ret)); - ret.family = OF_SOCKET_ADDRESS_FAMILY_UNIX; + ret.family = OFSocketAddressFamilyUNIX; ret.length = (socklen_t)(sizeof(ret.sockaddr.un) - (sizeof(ret.sockaddr.un.sun_path) - length)); #ifdef AF_UNIX ret.sockaddr.un.sun_family = AF_UNIX; @@ -568,12 +566,12 @@ return ret; } bool -of_socket_address_equal(const of_socket_address_t *address1, - const of_socket_address_t *address2) +OFSocketAddressEqual(const OFSocketAddress *address1, + const OFSocketAddress *address2) { const struct sockaddr_in *addrIn1, *addrIn2; const struct sockaddr_in6 *addrIn6_1, *addrIn6_2; const struct sockaddr_ipx *addrIPX1, *addrIPX2; void *pool; @@ -582,11 +580,11 @@ if (address1->family != address2->family) return false; switch (address1->family) { - case OF_SOCKET_ADDRESS_FAMILY_IPV4: + case OFSocketAddressFamilyIPv4: #if defined(OF_WII) || defined(OF_NINTENDO_3DS) if (address1->length < 8 || address2->length < 8) @throw [OFInvalidArgumentException exception]; #else if (address1->length < (socklen_t)sizeof(struct sockaddr_in) || @@ -601,11 +599,11 @@ return false; if (addrIn1->sin_addr.s_addr != addrIn2->sin_addr.s_addr) return false; return true; - case OF_SOCKET_ADDRESS_FAMILY_IPV6: + case OFSocketAddressFamilyIPv6: if (address1->length < (socklen_t)sizeof(struct sockaddr_in6) || address2->length < (socklen_t)sizeof(struct sockaddr_in6)) @throw [OFInvalidArgumentException exception]; addrIn6_1 = &address1->sockaddr.in6; @@ -617,11 +615,11 @@ addrIn6_2->sin6_addr.s6_addr, sizeof(addrIn6_1->sin6_addr.s6_addr)) != 0) return false; return true; - case OF_SOCKET_ADDRESS_FAMILY_IPX: + case OFSocketAddressFamilyIPX: if (address1->length < (socklen_t)sizeof(struct sockaddr_ipx) || address2->length < (socklen_t)sizeof(struct sockaddr_ipx)) @throw [OFInvalidArgumentException exception]; addrIPX1 = &address1->sockaddr.ipx; @@ -635,11 +633,11 @@ if (memcmp(addrIPX1->sipx_node, addrIPX2->sipx_node, IPX_NODE_LEN) != 0) return false; return true; - case OF_SOCKET_ADDRESS_FAMILY_UNIX: + case OFSocketAddressFamilyUNIX: /* * This is a bit tricky. The only thing that is well-defined is * the path. So compare the path, and if both don't have a * path, compare bytes. */ @@ -647,12 +645,12 @@ if (address1->length != address2->length) return false; pool = objc_autoreleasePoolPush(); - path1 = of_socket_get_unix_path(address1); - path2 = of_socket_get_unix_path(address2); + path1 = OFSocketAddressUNIXPath(address1); + path2 = OFSocketAddressUNIXPath(address2); if (path1 == nil && path2 == nil) { objc_autoreleasePoolPop(pool); return (memcmp(&address1->sockaddr.un, @@ -671,76 +669,76 @@ @throw [OFInvalidArgumentException exception]; } } unsigned long -of_socket_address_hash(const of_socket_address_t *address) +OFSocketAddressHash(const OFSocketAddress *address) { unsigned long hash; - OF_HASH_INIT(hash); - OF_HASH_ADD(hash, address->family); + OFHashInit(&hash); + OFHashAdd(&hash, address->family); switch (address->family) { - case OF_SOCKET_ADDRESS_FAMILY_IPV4: + case OFSocketAddressFamilyIPv4: #if defined(OF_WII) || defined(OF_NINTENDO_3DS) if (address->length < 8) @throw [OFInvalidArgumentException exception]; #else if (address->length < (socklen_t)sizeof(struct sockaddr_in)) @throw [OFInvalidArgumentException exception]; #endif - OF_HASH_ADD(hash, address->sockaddr.in.sin_port >> 8); - OF_HASH_ADD(hash, address->sockaddr.in.sin_port); - OF_HASH_ADD(hash, address->sockaddr.in.sin_addr.s_addr >> 24); - OF_HASH_ADD(hash, address->sockaddr.in.sin_addr.s_addr >> 16); - OF_HASH_ADD(hash, address->sockaddr.in.sin_addr.s_addr >> 8); - OF_HASH_ADD(hash, address->sockaddr.in.sin_addr.s_addr); + OFHashAdd(&hash, address->sockaddr.in.sin_port >> 8); + OFHashAdd(&hash, address->sockaddr.in.sin_port); + OFHashAdd(&hash, address->sockaddr.in.sin_addr.s_addr >> 24); + OFHashAdd(&hash, address->sockaddr.in.sin_addr.s_addr >> 16); + OFHashAdd(&hash, address->sockaddr.in.sin_addr.s_addr >> 8); + OFHashAdd(&hash, address->sockaddr.in.sin_addr.s_addr); break; - case OF_SOCKET_ADDRESS_FAMILY_IPV6: + case OFSocketAddressFamilyIPv6: if (address->length < (socklen_t)sizeof(struct sockaddr_in6)) @throw [OFInvalidArgumentException exception]; - OF_HASH_ADD(hash, address->sockaddr.in6.sin6_port >> 8); - OF_HASH_ADD(hash, address->sockaddr.in6.sin6_port); + OFHashAdd(&hash, address->sockaddr.in6.sin6_port >> 8); + OFHashAdd(&hash, address->sockaddr.in6.sin6_port); for (size_t i = 0; i < sizeof(address->sockaddr.in6.sin6_addr.s6_addr); i++) - OF_HASH_ADD(hash, + OFHashAdd(&hash, address->sockaddr.in6.sin6_addr.s6_addr[i]); break; - case OF_SOCKET_ADDRESS_FAMILY_IPX:; + case OFSocketAddressFamilyIPX:; unsigned char network[ sizeof(address->sockaddr.ipx.sipx_network)]; if (address->length < (socklen_t)sizeof(struct sockaddr_ipx)) @throw [OFInvalidArgumentException exception]; - OF_HASH_ADD(hash, address->sockaddr.ipx.sipx_port >> 8); - OF_HASH_ADD(hash, address->sockaddr.ipx.sipx_port); + OFHashAdd(&hash, address->sockaddr.ipx.sipx_port >> 8); + OFHashAdd(&hash, address->sockaddr.ipx.sipx_port); memcpy(network, &address->sockaddr.ipx.sipx_network, sizeof(network)); for (size_t i = 0; i < sizeof(network); i++) - OF_HASH_ADD(hash, network[i]); + OFHashAdd(&hash, network[i]); for (size_t i = 0; i < IPX_NODE_LEN; i++) - OF_HASH_ADD(hash, address->sockaddr.ipx.sipx_node[i]); + OFHashAdd(&hash, address->sockaddr.ipx.sipx_node[i]); break; - case OF_SOCKET_ADDRESS_FAMILY_UNIX:; + case OFSocketAddressFamilyUNIX:; /* * This is a bit tricky. The only thing that is well-defined is * the path. So hash the path if we have one, otherwise the * bytes. */ void *pool = objc_autoreleasePoolPush(); - OFString *path = of_socket_get_unix_path(address); + OFString *path = OFSocketAddressUNIXPath(address); if (path != nil) { hash = [path hash]; objc_autoreleasePoolPop(pool); return hash; @@ -747,42 +745,39 @@ } objc_autoreleasePoolPop(pool); for (socklen_t i = 0; i < address->length; i++) - OF_HASH_ADD(hash, + OFHashAdd(&hash, ((const char *)&address->sockaddr.un)[i]); break; default: @throw [OFInvalidArgumentException exception]; } - OF_HASH_FINALIZE(hash); + OFHashFinalize(&hash); return hash; } static OFString * -IPv4String(const of_socket_address_t *address, uint16_t *port) +IPv4String(const OFSocketAddress *address) { const struct sockaddr_in *addrIn = &address->sockaddr.in; - uint32_t addr = OF_BSWAP32_IF_LE(addrIn->sin_addr.s_addr); + uint32_t addr = OFFromBigEndian32(addrIn->sin_addr.s_addr); OFString *string; string = [OFString stringWithFormat: @"%u.%u.%u.%u", (addr & 0xFF000000) >> 24, (addr & 0x00FF0000) >> 16, (addr & 0x0000FF00) >> 8, addr & 0x000000FF]; - if (port != NULL) - *port = OF_BSWAP16_IF_LE(addrIn->sin_port); - return string; } static OFString * -IPv6String(const of_socket_address_t *address, uint16_t *port) +IPv6String(const OFSocketAddress *address) { OFMutableString *string = [OFMutableString string]; const struct sockaddr_in6 *addrIn6 = &address->sockaddr.in6; int_fast8_t zerosStart = -1, maxZerosStart = -1; uint_fast8_t zerosCount = 0, maxZerosCount = 0; @@ -841,114 +836,110 @@ } } [string makeImmutable]; - if (port != NULL) - *port = OF_BSWAP16_IF_LE(addrIn6->sin6_port); - return string; } OFString * -of_socket_address_ip_string(const of_socket_address_t *address, uint16_t *port) +OFSocketAddressString(const OFSocketAddress *address) { switch (address->family) { - case OF_SOCKET_ADDRESS_FAMILY_IPV4: - return IPv4String(address, port); - case OF_SOCKET_ADDRESS_FAMILY_IPV6: - return IPv6String(address, port); + case OFSocketAddressFamilyIPv4: + return IPv4String(address); + case OFSocketAddressFamilyIPv6: + return IPv6String(address); default: @throw [OFInvalidArgumentException exception]; } } void -of_socket_address_set_port(of_socket_address_t *address, uint16_t port) +OFSocketAddressSetPort(OFSocketAddress *address, uint16_t port) { switch (address->family) { - case OF_SOCKET_ADDRESS_FAMILY_IPV4: - address->sockaddr.in.sin_port = OF_BSWAP16_IF_LE(port); - break; - case OF_SOCKET_ADDRESS_FAMILY_IPV6: - address->sockaddr.in6.sin6_port = OF_BSWAP16_IF_LE(port); - break; - case OF_SOCKET_ADDRESS_FAMILY_IPX: - address->sockaddr.ipx.sipx_port = OF_BSWAP16_IF_LE(port); + case OFSocketAddressFamilyIPv4: + address->sockaddr.in.sin_port = OFToBigEndian16(port); + break; + case OFSocketAddressFamilyIPv6: + address->sockaddr.in6.sin6_port = OFToBigEndian16(port); + break; + case OFSocketAddressFamilyIPX: + address->sockaddr.ipx.sipx_port = OFToBigEndian16(port); break; default: @throw [OFInvalidArgumentException exception]; } } uint16_t -of_socket_address_get_port(const of_socket_address_t *address) +OFSocketAddressPort(const OFSocketAddress *address) { switch (address->family) { - case OF_SOCKET_ADDRESS_FAMILY_IPV4: - return OF_BSWAP16_IF_LE(address->sockaddr.in.sin_port); - case OF_SOCKET_ADDRESS_FAMILY_IPV6: - return OF_BSWAP16_IF_LE(address->sockaddr.in6.sin6_port); - case OF_SOCKET_ADDRESS_FAMILY_IPX: - return OF_BSWAP16_IF_LE(address->sockaddr.ipx.sipx_port); + case OFSocketAddressFamilyIPv4: + return OFFromBigEndian16(address->sockaddr.in.sin_port); + case OFSocketAddressFamilyIPv6: + return OFFromBigEndian16(address->sockaddr.in6.sin6_port); + case OFSocketAddressFamilyIPX: + return OFFromBigEndian16(address->sockaddr.ipx.sipx_port); default: @throw [OFInvalidArgumentException exception]; } } void -of_socket_address_set_ipx_network(of_socket_address_t *address, - uint32_t network) +OFSocketAddressSetIPXNetwork(OFSocketAddress *address, uint32_t network) { - if (address->family != OF_SOCKET_ADDRESS_FAMILY_IPX) + if (address->family != OFSocketAddressFamilyIPX) @throw [OFInvalidArgumentException exception]; - network = OF_BSWAP32_IF_LE(network); + network = OFToBigEndian32(network); memcpy(&address->sockaddr.ipx.sipx_network, &network, sizeof(address->sockaddr.ipx.sipx_network)); } uint32_t -of_socket_address_get_ipx_network(const of_socket_address_t *address) +OFSocketAddressIPXNetwork(const OFSocketAddress *address) { uint32_t network; - if (address->family != OF_SOCKET_ADDRESS_FAMILY_IPX) + if (address->family != OFSocketAddressFamilyIPX) @throw [OFInvalidArgumentException exception]; memcpy(&network, &address->sockaddr.ipx.sipx_network, sizeof(network)); - return OF_BSWAP32_IF_LE(network); + return OFFromBigEndian32(network); } void -of_socket_address_set_ipx_node(of_socket_address_t *address, +OFSocketAddressSetIPXNode(OFSocketAddress *address, const unsigned char node[IPX_NODE_LEN]) { - if (address->family != OF_SOCKET_ADDRESS_FAMILY_IPX) + if (address->family != OFSocketAddressFamilyIPX) @throw [OFInvalidArgumentException exception]; memcpy(address->sockaddr.ipx.sipx_node, node, IPX_NODE_LEN); } void -of_socket_address_get_ipx_node(const of_socket_address_t *address, +OFSocketAddressIPXNode(const OFSocketAddress *address, unsigned char node[IPX_NODE_LEN]) { - if (address->family != OF_SOCKET_ADDRESS_FAMILY_IPX) + if (address->family != OFSocketAddressFamilyIPX) @throw [OFInvalidArgumentException exception]; memcpy(node, address->sockaddr.ipx.sipx_node, IPX_NODE_LEN); } OFString * -of_socket_get_unix_path(const of_socket_address_t *_Nonnull address) +OFSocketAddressUNIXPath(const OFSocketAddress *_Nonnull address) { socklen_t maxLength = (socklen_t)sizeof(address->sockaddr.un); size_t length; - if (address->family != OF_SOCKET_ADDRESS_FAMILY_UNIX || + if (address->family != OFSocketAddressFamilyUNIX || address->length > maxLength) @throw [OFInvalidArgumentException exception]; length = sizeof(address->sockaddr.un.sun_path) - (maxLength - address->length);