Merge branch 'network' of git://github.com/jb-perrier/FlaxEngine into 1.1

This commit is contained in:
Wojtek Figat
2021-02-16 11:24:05 +01:00
4 changed files with 15 additions and 12 deletions

View File

@@ -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;
}

View File

@@ -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
{
/// <summary>Not specified.</summary>
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] = {};
};
@@ -74,8 +74,10 @@ enum class FLAXENGINE_API NetworkSocketOption
Error,
/// <summary>Enables the Nagle algorithm for TCP sockets.</summary>
NoDelay,
/// <summary>Enables IPv6 communication only for TCP socket.</summary>
/// <summary>Enables IPv6/Ipv4 dual-stacking, UDP/TCP.</summary>
IPv6Only,
/// <summary>Retrieve the current path MTU, the socket must be connected UDP/TCP.</summary>
Mtu
};
struct FLAXENGINE_API NetworkSocketState
@@ -103,7 +105,7 @@ public:
/// <param name="proto">The protocol.</param>
/// <param name="ipv">The ip version.</param>
/// <returns>Returns true on error, otherwise false.</returns>
static bool CreateSocket(NetworkSocket& socket, NetworkProtocolType proto, NetworkIPVersion ipv);
static bool CreateSocket(NetworkSocket& socket, NetworkProtocol proto, NetworkIPVersion ipv);
/// <summary>
/// Closes native socket.

View File

@@ -132,16 +132,17 @@ 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)
}
}
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 +260,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 +373,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 +381,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)
{

View File

@@ -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);