From 134aec2d157d8bbed60eb45a8430685f36d943dc Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Perrier Date: Mon, 15 Feb 2021 20:52:35 +0100 Subject: [PATCH 1/4] Simplified name NetworkProtocol. --- Source/Engine/Platform/Base/NetworkBase.cpp | 2 +- Source/Engine/Platform/Base/NetworkBase.h | 4 ++-- Source/Engine/Platform/Win32/Win32Network.cpp | 12 ++++++------ Source/Engine/Platform/Win32/Win32Network.h | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Source/Engine/Platform/Base/NetworkBase.cpp b/Source/Engine/Platform/Base/NetworkBase.cpp index 06f297cc1..6ba5208f8 100644 --- a/Source/Engine/Platform/Base/NetworkBase.cpp +++ b/Source/Engine/Platform/Base/NetworkBase.cpp @@ -2,7 +2,7 @@ #include "NetworkBase.h" -bool NetworkBase::CreateSocket(NetworkSocket& socket, NetworkProtocolType proto, NetworkIPVersion ipv) +bool NetworkBase::CreateSocket(NetworkSocket& socket, NetworkProtocol proto, NetworkIPVersion ipv) { return true; } diff --git a/Source/Engine/Platform/Base/NetworkBase.h b/Source/Engine/Platform/Base/NetworkBase.h index 6e6821ab4..90195c729 100644 --- a/Source/Engine/Platform/Base/NetworkBase.h +++ b/Source/Engine/Platform/Base/NetworkBase.h @@ -9,7 +9,7 @@ API_INJECT_CPP_CODE("#include \"Engine/Platform/Network.h\""); #define SOCKGROUP_MAXCOUNT 64 #define SOCKGROUP_ITEMSIZE 16 -enum class FLAXENGINE_API NetworkProtocolType +enum class FLAXENGINE_API NetworkProtocol { /// Not specified. Undefined, @@ -31,7 +31,7 @@ enum class FLAXENGINE_API NetworkIPVersion struct FLAXENGINE_API NetworkSocket { - NetworkProtocolType Protocol = NetworkProtocolType::Undefined; + NetworkProtocol Protocol = NetworkProtocol::Undefined; NetworkIPVersion IPVersion = NetworkIPVersion::Undefined; byte Data[8] = {}; }; diff --git a/Source/Engine/Platform/Win32/Win32Network.cpp b/Source/Engine/Platform/Win32/Win32Network.cpp index 2da68957b..cea22dacb 100644 --- a/Source/Engine/Platform/Win32/Win32Network.cpp +++ b/Source/Engine/Platform/Win32/Win32Network.cpp @@ -135,13 +135,13 @@ static void TranslateSockOptToNative(NetworkSocketOption option, int32* level, i } } -bool Win32Network::CreateSocket(NetworkSocket& socket, NetworkProtocolType proto, NetworkIPVersion ipv) +bool Win32Network::CreateSocket(NetworkSocket& socket, NetworkProtocol proto, NetworkIPVersion ipv) { socket.Protocol = proto; socket.IPVersion = ipv; const uint8 family = socket.IPVersion == NetworkIPVersion::IPv6 ? AF_INET6 : AF_INET; - const uint8 stype = socket.Protocol == NetworkProtocolType::Tcp ? SOCK_STREAM : SOCK_DGRAM; - const uint8 prot = socket.Protocol == NetworkProtocolType::Tcp ? IPPROTO_TCP : IPPROTO_UDP; + const uint8 stype = socket.Protocol == NetworkProtocol::Tcp ? SOCK_STREAM : SOCK_DGRAM; + const uint8 prot = socket.Protocol == NetworkProtocol::Tcp ? IPPROTO_TCP : IPPROTO_UDP; SOCKET sock; if ((sock = ::socket(family, stype, prot)) == INVALID_SOCKET) @@ -259,7 +259,7 @@ bool Win32Network::Listen(NetworkSocket& socket, uint16 queueSize) bool Win32Network::Accept(NetworkSocket& serverSock, NetworkSocket& newSock, NetworkEndPoint& newEndPoint) { - if (serverSock.Protocol != NetworkProtocolType::Tcp) + if (serverSock.Protocol != NetworkProtocol::Tcp) { LOG(Warning, "Can't accept connection on UDP socket! Socket : {0}", *(SOCKET*)serverSock.Data); return true; @@ -372,7 +372,7 @@ int32 Win32Network::WriteSocket(NetworkSocket socket, byte* data, uint32 length, return -1; } uint32 size; - if (endPoint == nullptr && socket.Protocol == NetworkProtocolType::Tcp) + if (endPoint == nullptr && socket.Protocol == NetworkProtocol::Tcp) { if ((size = send(*(SOCKET*)socket.Data, (const char*)data, length, 0)) == SOCKET_ERROR) { @@ -380,7 +380,7 @@ int32 Win32Network::WriteSocket(NetworkSocket socket, byte* data, uint32 length, return -1; } } - else if (endPoint != nullptr && socket.Protocol == NetworkProtocolType::Udp) + else if (endPoint != nullptr && socket.Protocol == NetworkProtocol::Udp) { if ((size = sendto(*(SOCKET*)socket.Data, (const char*)data, length, 0, (const sockaddr*)endPoint->Data, GetAddrSizeFromEP(*endPoint))) == SOCKET_ERROR) { diff --git a/Source/Engine/Platform/Win32/Win32Network.h b/Source/Engine/Platform/Win32/Win32Network.h index b0e313056..7a1aaabbf 100644 --- a/Source/Engine/Platform/Win32/Win32Network.h +++ b/Source/Engine/Platform/Win32/Win32Network.h @@ -13,7 +13,7 @@ class FLAXENGINE_API Win32Network : public NetworkBase public: // [NetworkBase] - static bool CreateSocket(NetworkSocket& socket, NetworkProtocolType proto, NetworkIPVersion ipv); + static bool CreateSocket(NetworkSocket& socket, NetworkProtocol proto, NetworkIPVersion ipv); static bool DestroySocket(NetworkSocket& socket); static bool SetSocketOption(NetworkSocket& socket, NetworkSocketOption option, bool value); static bool SetSocketOption(NetworkSocket& socket, NetworkSocketOption option, int32 value); From bc6281ee63a39842b9f7e0c89dda3a2357ed0d4a Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Perrier Date: Mon, 15 Feb 2021 20:53:07 +0100 Subject: [PATCH 2/4] Add MTU option. --- Source/Engine/Platform/Base/NetworkBase.h | 2 ++ Source/Engine/Platform/Win32/Win32Network.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/Source/Engine/Platform/Base/NetworkBase.h b/Source/Engine/Platform/Base/NetworkBase.h index 90195c729..0ae8a3dcc 100644 --- a/Source/Engine/Platform/Base/NetworkBase.h +++ b/Source/Engine/Platform/Base/NetworkBase.h @@ -76,6 +76,8 @@ enum class FLAXENGINE_API NetworkSocketOption NoDelay, /// Enables IPv6 communication only for TCP socket. IPv6Only, + /// Retrieve the current path MTU, the socket must be connected UDP/TCP. + Mtu }; struct FLAXENGINE_API NetworkSocketState diff --git a/Source/Engine/Platform/Win32/Win32Network.cpp b/Source/Engine/Platform/Win32/Win32Network.cpp index cea22dacb..38b99a25e 100644 --- a/Source/Engine/Platform/Win32/Win32Network.cpp +++ b/Source/Engine/Platform/Win32/Win32Network.cpp @@ -132,6 +132,7 @@ static void TranslateSockOptToNative(NetworkSocketOption option, int32* level, i SOCKOPT(NetworkSocketOption::Error, SOL_SOCKET, SO_ERROR) SOCKOPT(NetworkSocketOption::NoDelay, IPPROTO_TCP, TCP_NODELAY) SOCKOPT(NetworkSocketOption::IPv6Only, IPPROTO_IPV6, IPV6_V6ONLY) + SOCKOPT(NetworkSocketOption::Mtu, IPPROTO_IP , IP_MTU) } } From a2e13460291c4aa29115f7c9ee652f3024a9578a Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Perrier Date: Mon, 15 Feb 2021 20:53:53 +0100 Subject: [PATCH 3/4] Docs tweak. --- Source/Engine/Platform/Base/NetworkBase.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Engine/Platform/Base/NetworkBase.h b/Source/Engine/Platform/Base/NetworkBase.h index 0ae8a3dcc..7c0a1cbd0 100644 --- a/Source/Engine/Platform/Base/NetworkBase.h +++ b/Source/Engine/Platform/Base/NetworkBase.h @@ -74,7 +74,7 @@ enum class FLAXENGINE_API NetworkSocketOption Error, /// Enables the Nagle algorithm for TCP sockets. NoDelay, - /// Enables IPv6 communication only for TCP socket. + /// Enables IPv6/Ipv4 dual-stacking, UDP/TCP. IPv6Only, /// Retrieve the current path MTU, the socket must be connected UDP/TCP. Mtu From 26e3400a926d0b684e69ee4eb4d08d2fc238e418 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Perrier Date: Mon, 15 Feb 2021 20:54:00 +0100 Subject: [PATCH 4/4] Typo. --- Source/Engine/Platform/Base/NetworkBase.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Engine/Platform/Base/NetworkBase.h b/Source/Engine/Platform/Base/NetworkBase.h index 7c0a1cbd0..e5ad03f98 100644 --- a/Source/Engine/Platform/Base/NetworkBase.h +++ b/Source/Engine/Platform/Base/NetworkBase.h @@ -105,7 +105,7 @@ public: /// The protocol. /// The ip version. /// Returns true on error, otherwise false. - static bool CreateSocket(NetworkSocket& socket, NetworkProtocolType proto, NetworkIPVersion ipv); + static bool CreateSocket(NetworkSocket& socket, NetworkProtocol proto, NetworkIPVersion ipv); /// /// Closes native socket.