LmIpcServer.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Ryujinx.Horizon.LogManager.Ipc;
  2. using Ryujinx.Horizon.Sdk.Sf.Hipc;
  3. using Ryujinx.Horizon.Sdk.Sm;
  4. namespace Ryujinx.Horizon.LogManager
  5. {
  6. class LmIpcServer
  7. {
  8. private const int LogMaxSessionsCount = 42;
  9. private const int PointerBufferSize = 0x400;
  10. private const int MaxDomains = 31;
  11. private const int MaxDomainObjects = 61;
  12. private const int MaxPortsCount = 1;
  13. private static readonly ManagerOptions _logManagerOptions = new(PointerBufferSize, MaxDomains, MaxDomainObjects, false);
  14. private SmApi _sm;
  15. private ServerManager _serverManager;
  16. public void Initialize()
  17. {
  18. HeapAllocator allocator = new();
  19. _sm = new SmApi();
  20. _sm.Initialize().AbortOnFailure();
  21. _serverManager = new ServerManager(allocator, _sm, MaxPortsCount, _logManagerOptions, LogMaxSessionsCount);
  22. _serverManager.RegisterObjectForServer(new LogService(), ServiceName.Encode("lm"), LogMaxSessionsCount);
  23. }
  24. public void ServiceRequests()
  25. {
  26. _serverManager.ServiceRequests();
  27. }
  28. public void Shutdown()
  29. {
  30. _serverManager.Dispose();
  31. }
  32. }
  33. }