mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-11-18 00:36:40 +00:00
Move ConvertBsdSocketFlags() to WinSockHelper
This commit is contained in:
parent
49acca8cf7
commit
c89a1b2d46
2 changed files with 51 additions and 50 deletions
|
@ -41,50 +41,6 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
|
||||||
RefCount = 1;
|
RefCount = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SocketFlags ConvertBsdSocketFlags(BsdSocketFlags bsdSocketFlags)
|
|
||||||
{
|
|
||||||
SocketFlags socketFlags = SocketFlags.None;
|
|
||||||
|
|
||||||
if (bsdSocketFlags.HasFlag(BsdSocketFlags.Oob))
|
|
||||||
{
|
|
||||||
socketFlags |= SocketFlags.OutOfBand;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bsdSocketFlags.HasFlag(BsdSocketFlags.Peek))
|
|
||||||
{
|
|
||||||
socketFlags |= SocketFlags.Peek;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bsdSocketFlags.HasFlag(BsdSocketFlags.DontRoute))
|
|
||||||
{
|
|
||||||
socketFlags |= SocketFlags.DontRoute;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bsdSocketFlags.HasFlag(BsdSocketFlags.Trunc))
|
|
||||||
{
|
|
||||||
socketFlags |= SocketFlags.Truncated;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bsdSocketFlags.HasFlag(BsdSocketFlags.CTrunc))
|
|
||||||
{
|
|
||||||
socketFlags |= SocketFlags.ControlDataTruncated;
|
|
||||||
}
|
|
||||||
|
|
||||||
bsdSocketFlags &= ~(BsdSocketFlags.Oob |
|
|
||||||
BsdSocketFlags.Peek |
|
|
||||||
BsdSocketFlags.DontRoute |
|
|
||||||
BsdSocketFlags.DontWait |
|
|
||||||
BsdSocketFlags.Trunc |
|
|
||||||
BsdSocketFlags.CTrunc);
|
|
||||||
|
|
||||||
if (bsdSocketFlags != BsdSocketFlags.None)
|
|
||||||
{
|
|
||||||
Logger.Warning?.Print(LogClass.ServiceBsd, $"Unsupported socket flags: {bsdSocketFlags}");
|
|
||||||
}
|
|
||||||
|
|
||||||
return socketFlags;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LinuxError Accept(out ISocket newSocket)
|
public LinuxError Accept(out ISocket newSocket)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -199,7 +155,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
|
||||||
shouldBlockAfterOperation = true;
|
shouldBlockAfterOperation = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
receiveSize = Socket.Receive(buffer, ConvertBsdSocketFlags(flags));
|
receiveSize = Socket.Receive(buffer, WinSockHelper.ConvertBsdSocketFlags(flags));
|
||||||
|
|
||||||
result = LinuxError.SUCCESS;
|
result = LinuxError.SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -243,7 +199,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
|
||||||
return LinuxError.EOPNOTSUPP;
|
return LinuxError.EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
receiveSize = Socket.ReceiveFrom(buffer[..size], ConvertBsdSocketFlags(flags), ref temp);
|
receiveSize = Socket.ReceiveFrom(buffer[..size], WinSockHelper.ConvertBsdSocketFlags(flags), ref temp);
|
||||||
|
|
||||||
remoteEndPoint = (IPEndPoint)temp;
|
remoteEndPoint = (IPEndPoint)temp;
|
||||||
result = LinuxError.SUCCESS;
|
result = LinuxError.SUCCESS;
|
||||||
|
@ -267,7 +223,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
sendSize = Socket.Send(buffer, ConvertBsdSocketFlags(flags));
|
sendSize = Socket.Send(buffer, WinSockHelper.ConvertBsdSocketFlags(flags));
|
||||||
|
|
||||||
return LinuxError.SUCCESS;
|
return LinuxError.SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -283,7 +239,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
sendSize = Socket.SendTo(buffer[..size], ConvertBsdSocketFlags(flags), remoteEndPoint);
|
sendSize = Socket.SendTo(buffer[..size], WinSockHelper.ConvertBsdSocketFlags(flags), remoteEndPoint);
|
||||||
|
|
||||||
return LinuxError.SUCCESS;
|
return LinuxError.SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -493,7 +449,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int receiveSize = Socket.Receive(ConvertMessagesToBuffer(message), ConvertBsdSocketFlags(flags), out SocketError socketError);
|
int receiveSize = Socket.Receive(ConvertMessagesToBuffer(message), WinSockHelper.ConvertBsdSocketFlags(flags), out SocketError socketError);
|
||||||
|
|
||||||
if (receiveSize > 0)
|
if (receiveSize > 0)
|
||||||
{
|
{
|
||||||
|
@ -531,7 +487,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int sendSize = Socket.Send(ConvertMessagesToBuffer(message), ConvertBsdSocketFlags(flags), out SocketError socketError);
|
int sendSize = Socket.Send(ConvertMessagesToBuffer(message), WinSockHelper.ConvertBsdSocketFlags(flags), out SocketError socketError);
|
||||||
|
|
||||||
if (sendSize > 0)
|
if (sendSize > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
|
using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -343,5 +344,49 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
|
||||||
|
|
||||||
return LinuxError.SUCCESS;
|
return LinuxError.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SocketFlags ConvertBsdSocketFlags(BsdSocketFlags bsdSocketFlags)
|
||||||
|
{
|
||||||
|
SocketFlags socketFlags = SocketFlags.None;
|
||||||
|
|
||||||
|
if (bsdSocketFlags.HasFlag(BsdSocketFlags.Oob))
|
||||||
|
{
|
||||||
|
socketFlags |= SocketFlags.OutOfBand;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bsdSocketFlags.HasFlag(BsdSocketFlags.Peek))
|
||||||
|
{
|
||||||
|
socketFlags |= SocketFlags.Peek;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bsdSocketFlags.HasFlag(BsdSocketFlags.DontRoute))
|
||||||
|
{
|
||||||
|
socketFlags |= SocketFlags.DontRoute;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bsdSocketFlags.HasFlag(BsdSocketFlags.Trunc))
|
||||||
|
{
|
||||||
|
socketFlags |= SocketFlags.Truncated;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bsdSocketFlags.HasFlag(BsdSocketFlags.CTrunc))
|
||||||
|
{
|
||||||
|
socketFlags |= SocketFlags.ControlDataTruncated;
|
||||||
|
}
|
||||||
|
|
||||||
|
bsdSocketFlags &= ~(BsdSocketFlags.Oob |
|
||||||
|
BsdSocketFlags.Peek |
|
||||||
|
BsdSocketFlags.DontRoute |
|
||||||
|
BsdSocketFlags.DontWait |
|
||||||
|
BsdSocketFlags.Trunc |
|
||||||
|
BsdSocketFlags.CTrunc);
|
||||||
|
|
||||||
|
if (bsdSocketFlags != BsdSocketFlags.None)
|
||||||
|
{
|
||||||
|
Logger.Warning?.Print(LogClass.ServiceBsd, $"Unsupported socket flags: {bsdSocketFlags}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return socketFlags;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue