Add bindable argument.

This commit is contained in:
Jean-Baptiste Perrier
2021-01-23 20:21:06 +01:00
parent 54da2c8de0
commit c9655eee8f
4 changed files with 5 additions and 6 deletions

View File

@@ -51,7 +51,7 @@ int32 NetworkBase::ReadSocket(NetworkSocket socket, byte* buffer, uint32 bufferS
return 0; return 0;
} }
bool NetworkBase::CreateEndPoint(String* address, String* port, NetworkIPVersion ipv, NetworkEndPoint& endPoint) bool NetworkBase::CreateEndPoint(String* address, String* port, NetworkIPVersion ipv, NetworkEndPoint& endPoint, bool bindable)
{ {
return false; return false;
} }

View File

@@ -57,7 +57,7 @@ class FLAXENGINE_API NetworkBase
static bool IsReadable(NetworkSocket& socket, uint64* size); static bool IsReadable(NetworkSocket& socket, uint64* size);
static int32 WriteSocket(NetworkSocket socket, byte* data, uint32 length, NetworkEndPoint* endPoint = nullptr); static int32 WriteSocket(NetworkSocket socket, byte* data, uint32 length, NetworkEndPoint* endPoint = nullptr);
static int32 ReadSocket(NetworkSocket socket, byte* buffer, uint32 bufferSize, NetworkEndPoint* endPoint = nullptr); static int32 ReadSocket(NetworkSocket socket, byte* buffer, uint32 bufferSize, NetworkEndPoint* endPoint = nullptr);
static bool CreateEndPoint(String* address, String* port, NetworkIPVersion ipv, NetworkEndPoint& endPoint); static bool CreateEndPoint(String* address, String* port, NetworkIPVersion ipv, NetworkEndPoint& endPoint, bool bindable = false);
static NetworkEndPoint RemapEndPointToIPv6(NetworkEndPoint& endPoint); static NetworkEndPoint RemapEndPointToIPv6(NetworkEndPoint& endPoint);
}; };

View File

@@ -291,7 +291,7 @@ int32 Win32Network::ReadSocket(NetworkSocket socket, byte* buffer, uint32 buffer
} }
// if address is null, it's ADDR_ANY // if address is null, it's ADDR_ANY
bool Win32Network::CreateEndPoint(String* address, String* port, NetworkIPVersion ipv, NetworkEndPoint& endPoint) bool Win32Network::CreateEndPoint(String* address, String* port, NetworkIPVersion ipv, NetworkEndPoint& endPoint, bool bindable)
{ {
int status; int status;
addrinfoW hints; addrinfoW hints;
@@ -303,8 +303,7 @@ bool Win32Network::CreateEndPoint(String* address, String* port, NetworkIPVersio
hints.ai_family = ipv == NetworkIPVersion::IPv6 ? AF_INET6 : ipv == NetworkIPVersion::IPv4 ? AF_INET : AF_UNSPEC; hints.ai_family = ipv == NetworkIPVersion::IPv6 ? AF_INET6 : ipv == NetworkIPVersion::IPv4 ? AF_INET : AF_UNSPEC;
hints.ai_flags |= AI_ADDRCONFIG; hints.ai_flags |= AI_ADDRCONFIG;
hints.ai_flags |= AI_V4MAPPED; hints.ai_flags |= AI_V4MAPPED;
if (paddr == nullptr) if (bindable)
{
hints.ai_flags = AI_PASSIVE; hints.ai_flags = AI_PASSIVE;
// consider using NUMERICHOST/NUMERICSERV if address is a valid Ipv4 or IPv6 so we can skip some look up ( potentially slow when resolving host names ) // consider using NUMERICHOST/NUMERICSERV if address is a valid Ipv4 or IPv6 so we can skip some look up ( potentially slow when resolving host names )

View File

@@ -20,7 +20,7 @@ public:
static bool IsReadable(NetworkSocket& socket, uint64* size); static bool IsReadable(NetworkSocket& socket, uint64* size);
static int32 WriteSocket(NetworkSocket socket, byte* data, uint32 length, NetworkEndPoint* endPoint = nullptr); static int32 WriteSocket(NetworkSocket socket, byte* data, uint32 length, NetworkEndPoint* endPoint = nullptr);
static int32 ReadSocket(NetworkSocket socket, byte* buffer, uint32 bufferSize, NetworkEndPoint* endPoint = nullptr); static int32 ReadSocket(NetworkSocket socket, byte* buffer, uint32 bufferSize, NetworkEndPoint* endPoint = nullptr);
static bool CreateEndPoint(String* address, String* port, NetworkIPVersion ipv, NetworkEndPoint& endPoint); static bool CreateEndPoint(String* address, String* port, NetworkIPVersion ipv, NetworkEndPoint& endPoint, bool bindable = false);
static NetworkEndPoint RemapEndPointToIPv6(NetworkEndPoint endPoint); static NetworkEndPoint RemapEndPointToIPv6(NetworkEndPoint endPoint);
friend NetworkEndPoint; friend NetworkEndPoint;
friend NetworkSocket; friend NetworkSocket;