SmMain.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Ryujinx.Horizon.Prepo.Types;
  2. using Ryujinx.Horizon.Prepo;
  3. using Ryujinx.Horizon.Sdk.Sf.Hipc;
  4. using Ryujinx.Horizon.Sdk.Sm;
  5. using Ryujinx.Horizon.Sm.Impl;
  6. using Ryujinx.Horizon.Sm.Types;
  7. namespace Ryujinx.Horizon.Sm
  8. {
  9. public class SmMain
  10. {
  11. private const int SmMaxSessionsCount = 64;
  12. private const int SmmMaxSessionsCount = 1;
  13. private const int SmTotalMaxSessionsCount = SmMaxSessionsCount + SmmMaxSessionsCount;
  14. private const int MaxPortsCount = 2;
  15. private SmServerManager _serverManager;
  16. private readonly ServiceManager _serviceManager = new();
  17. public void Main()
  18. {
  19. HorizonStatic.Syscall.ManageNamedPort(out int smHandle, "sm:", SmMaxSessionsCount).AbortOnFailure();
  20. _serverManager = new SmServerManager(_serviceManager, null, null, MaxPortsCount, ManagerOptions.Default, SmTotalMaxSessionsCount);
  21. _serverManager.RegisterServer((int)SmPortIndex.User, smHandle);
  22. _serviceManager.RegisterServiceForSelf(out int smmHandle, ServiceName.Encode("sm:m"), SmmMaxSessionsCount).AbortOnFailure();
  23. _serverManager.RegisterServer((int)SmPortIndex.Manager, smmHandle);
  24. _serverManager.ServiceRequests();
  25. }
  26. }
  27. }