PrepoServerManager.cs
1 using Ryujinx.Horizon.Common; 2 using Ryujinx.Horizon.Prepo.Ipc; 3 using Ryujinx.Horizon.Prepo.Types; 4 using Ryujinx.Horizon.Sdk.Arp; 5 using Ryujinx.Horizon.Sdk.Sf.Hipc; 6 using Ryujinx.Horizon.Sdk.Sm; 7 using System; 8 9 namespace Ryujinx.Horizon.Prepo 10 { 11 class PrepoServerManager : ServerManager 12 { 13 private readonly ArpApi _arp; 14 15 public PrepoServerManager(HeapAllocator allocator, SmApi sm, ArpApi arp, int maxPorts, ManagerOptions options, int maxSessions) : base(allocator, sm, maxPorts, options, maxSessions) 16 { 17 _arp = arp; 18 } 19 20 protected override Result OnNeedsToAccept(int portIndex, Server server) 21 { 22 return (PrepoPortIndex)portIndex switch 23 { 24 #pragma warning disable IDE0055 // Disable formatting 25 PrepoPortIndex.Admin => AcceptImpl(server, new PrepoService(_arp, PrepoServicePermissionLevel.Admin)), 26 PrepoPortIndex.Admin2 => AcceptImpl(server, new PrepoService(_arp, PrepoServicePermissionLevel.Admin)), 27 PrepoPortIndex.Manager => AcceptImpl(server, new PrepoService(_arp, PrepoServicePermissionLevel.Manager)), 28 PrepoPortIndex.User => AcceptImpl(server, new PrepoService(_arp, PrepoServicePermissionLevel.User)), 29 PrepoPortIndex.System => AcceptImpl(server, new PrepoService(_arp, PrepoServicePermissionLevel.System)), 30 PrepoPortIndex.Debug => AcceptImpl(server, new PrepoService(_arp, PrepoServicePermissionLevel.Debug)), 31 _ => throw new ArgumentOutOfRangeException(nameof(portIndex)), 32 #pragma warning restore IDE0055 33 }; 34 } 35 } 36 }