mirror of
https://github.com/Ryubing/Ryujinx.git
synced 2025-11-25 16:42:23 -05:00
Move solution and projects to src
This commit is contained in:
72
src/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs
Normal file
72
src/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
using Ryujinx.HLE.HOS.Kernel.Common;
|
||||
using Ryujinx.Horizon.Common;
|
||||
|
||||
namespace Ryujinx.HLE.HOS.Kernel.Ipc
|
||||
{
|
||||
class KPort : KAutoObject
|
||||
{
|
||||
public KServerPort ServerPort { get; }
|
||||
public KClientPort ClientPort { get; }
|
||||
|
||||
private string _name;
|
||||
|
||||
private ChannelState _state;
|
||||
|
||||
public bool IsLight { get; private set; }
|
||||
|
||||
public KPort(KernelContext context, int maxSessions, bool isLight, string name) : base(context)
|
||||
{
|
||||
ServerPort = new KServerPort(context, this);
|
||||
ClientPort = new KClientPort(context, this, maxSessions);
|
||||
|
||||
IsLight = isLight;
|
||||
_name = name;
|
||||
|
||||
_state = ChannelState.Open;
|
||||
}
|
||||
|
||||
public Result EnqueueIncomingSession(KServerSession session)
|
||||
{
|
||||
Result result;
|
||||
|
||||
KernelContext.CriticalSection.Enter();
|
||||
|
||||
if (_state == ChannelState.Open)
|
||||
{
|
||||
ServerPort.EnqueueIncomingSession(session);
|
||||
|
||||
result = Result.Success;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = KernelResult.PortClosed;
|
||||
}
|
||||
|
||||
KernelContext.CriticalSection.Leave();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public Result EnqueueIncomingLightSession(KLightServerSession session)
|
||||
{
|
||||
Result result;
|
||||
|
||||
KernelContext.CriticalSection.Enter();
|
||||
|
||||
if (_state == ChannelState.Open)
|
||||
{
|
||||
ServerPort.EnqueueIncomingLightSession(session);
|
||||
|
||||
result = Result.Success;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = KernelResult.PortClosed;
|
||||
}
|
||||
|
||||
KernelContext.CriticalSection.Leave();
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user