PrepoServerManager.cs 1.4 KB

123456789101112131415161718192021222324252627282930
  1. using Ryujinx.Horizon.Common;
  2. using Ryujinx.Horizon.Prepo.Ipc;
  3. using Ryujinx.Horizon.Prepo.Types;
  4. using Ryujinx.Horizon.Sdk.Sf.Hipc;
  5. using Ryujinx.Horizon.Sdk.Sm;
  6. using System;
  7. namespace Ryujinx.Horizon.Prepo
  8. {
  9. class PrepoServerManager : ServerManager
  10. {
  11. public PrepoServerManager(HeapAllocator allocator, SmApi sm, int maxPorts, ManagerOptions options, int maxSessions) : base(allocator, sm, maxPorts, options, maxSessions)
  12. {
  13. }
  14. protected override Result OnNeedsToAccept(int portIndex, Server server)
  15. {
  16. return (PrepoPortIndex)portIndex switch
  17. {
  18. PrepoPortIndex.Admin => AcceptImpl(server, new PrepoService(PrepoServicePermissionLevel.Admin)),
  19. PrepoPortIndex.Admin2 => AcceptImpl(server, new PrepoService(PrepoServicePermissionLevel.Admin)),
  20. PrepoPortIndex.Manager => AcceptImpl(server, new PrepoService(PrepoServicePermissionLevel.Manager)),
  21. PrepoPortIndex.User => AcceptImpl(server, new PrepoService(PrepoServicePermissionLevel.User)),
  22. PrepoPortIndex.System => AcceptImpl(server, new PrepoService(PrepoServicePermissionLevel.System)),
  23. PrepoPortIndex.Debug => AcceptImpl(server, new PrepoService(PrepoServicePermissionLevel.Debug)),
  24. _ => throw new ArgumentOutOfRangeException(nameof(portIndex)),
  25. };
  26. }
  27. }
  28. }