diff options
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs')
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs b/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs deleted file mode 100644 index e0ab68c6..00000000 --- a/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs +++ /dev/null @@ -1,122 +0,0 @@ -using Ryujinx.Common.Logging; -using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types; -using System.Collections.Generic; -using System.Threading; - -namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl -{ - class EventFileDescriptorPollManager : IPollManager - { - private static EventFileDescriptorPollManager _instance; - - public static EventFileDescriptorPollManager Instance - { - get - { - if (_instance == null) - { - _instance = new EventFileDescriptorPollManager(); - } - - return _instance; - } - } - - public bool IsCompatible(PollEvent evnt) - { - return evnt.FileDescriptor is EventFileDescriptor; - } - - public LinuxError Poll(List<PollEvent> events, int timeoutMilliseconds, out int updatedCount) - { - updatedCount = 0; - - List<ManualResetEvent> waiters = new List<ManualResetEvent>(); - - for (int i = 0; i < events.Count; i++) - { - PollEvent evnt = events[i]; - - EventFileDescriptor socket = (EventFileDescriptor)evnt.FileDescriptor; - - bool isValidEvent = false; - - if (evnt.Data.InputEvents.HasFlag(PollEventTypeMask.Input) || - evnt.Data.InputEvents.HasFlag(PollEventTypeMask.UrgentInput)) - { - waiters.Add(socket.ReadEvent); - - isValidEvent = true; - } - if (evnt.Data.InputEvents.HasFlag(PollEventTypeMask.Output)) - { - waiters.Add(socket.WriteEvent); - - isValidEvent = true; - } - - if (!isValidEvent) - { - Logger.Warning?.Print(LogClass.ServiceBsd, $"Unsupported Poll input event type: {evnt.Data.InputEvents}"); - - return LinuxError.EINVAL; - } - } - - int index = WaitHandle.WaitAny(waiters.ToArray(), timeoutMilliseconds); - - if (index != WaitHandle.WaitTimeout) - { - for (int i = 0; i < events.Count; i++) - { - PollEventTypeMask outputEvents = 0; - - PollEvent evnt = events[i]; - - EventFileDescriptor socket = (EventFileDescriptor)evnt.FileDescriptor; - - if (socket.ReadEvent.WaitOne(0)) - { - if (evnt.Data.InputEvents.HasFlag(PollEventTypeMask.Input)) - { - outputEvents |= PollEventTypeMask.Input; - } - - if (evnt.Data.InputEvents.HasFlag(PollEventTypeMask.UrgentInput)) - { - outputEvents |= PollEventTypeMask.UrgentInput; - } - } - - if ((evnt.Data.InputEvents.HasFlag(PollEventTypeMask.Output)) - && socket.WriteEvent.WaitOne(0)) - { - outputEvents |= PollEventTypeMask.Output; - } - - - if (outputEvents != 0) - { - evnt.Data.OutputEvents = outputEvents; - - updatedCount++; - } - } - } - else - { - return LinuxError.ETIMEDOUT; - } - - return LinuxError.SUCCESS; - } - - public LinuxError Select(List<PollEvent> events, int timeout, out int updatedCount) - { - // TODO: Implement Select for event file descriptors - updatedCount = 0; - - return LinuxError.EOPNOTSUPP; - } - } -}
\ No newline at end of file |
