ServiceFactory.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. using Ryujinx.Common.Logging;
  2. using Ryujinx.HLE.HOS.Services.Acc;
  3. using Ryujinx.HLE.HOS.Services.Am;
  4. using Ryujinx.HLE.HOS.Services.Apm;
  5. using Ryujinx.HLE.HOS.Services.Aud;
  6. using Ryujinx.HLE.HOS.Services.Bsd;
  7. using Ryujinx.HLE.HOS.Services.Caps;
  8. using Ryujinx.HLE.HOS.Services.Es;
  9. using Ryujinx.HLE.HOS.Services.FspSrv;
  10. using Ryujinx.HLE.HOS.Services.Hid;
  11. using Ryujinx.HLE.HOS.Services.Irs;
  12. using Ryujinx.HLE.HOS.Services.Ldr;
  13. using Ryujinx.HLE.HOS.Services.Lm;
  14. using Ryujinx.HLE.HOS.Services.Mm;
  15. using Ryujinx.HLE.HOS.Services.Ncm;
  16. using Ryujinx.HLE.HOS.Services.Nfp;
  17. using Ryujinx.HLE.HOS.Services.Ns;
  18. using Ryujinx.HLE.HOS.Services.Nv;
  19. using Ryujinx.HLE.HOS.Services.Pctl;
  20. using Ryujinx.HLE.HOS.Services.Pl;
  21. using Ryujinx.HLE.HOS.Services.Pm;
  22. using Ryujinx.HLE.HOS.Services.Prepo;
  23. using Ryujinx.HLE.HOS.Services.Psm;
  24. using Ryujinx.HLE.HOS.Services.Set;
  25. using Ryujinx.HLE.HOS.Services.Sfdnsres;
  26. using Ryujinx.HLE.HOS.Services.Sm;
  27. using Ryujinx.HLE.HOS.Services.Spl;
  28. using Ryujinx.HLE.HOS.Services.Ssl;
  29. using Ryujinx.HLE.HOS.Services.Vi;
  30. using System;
  31. namespace Ryujinx.HLE.HOS.Services
  32. {
  33. public static class ServiceConfiguration
  34. {
  35. public static bool IgnoreMissingServices { get; set; }
  36. }
  37. static class ServiceFactory
  38. {
  39. public static IpcService MakeService(Horizon system, string name)
  40. {
  41. switch (name)
  42. {
  43. case "acc:u0":
  44. return new IAccountService();
  45. case "acc:u1":
  46. return new IAccountService();
  47. case "aoc:u":
  48. return new IAddOnContentManager();
  49. case "apm":
  50. return new IManager();
  51. case "apm:p":
  52. return new IManager();
  53. case "appletAE":
  54. return new IAllSystemAppletProxiesService();
  55. case "appletOE":
  56. return new IApplicationProxyService();
  57. case "audout:u":
  58. return new IAudioOutManager();
  59. case "audren:u":
  60. return new IAudioRendererManager();
  61. case "bcat:a":
  62. return new Bcat.IServiceCreator();
  63. case "bcat:m":
  64. return new Bcat.IServiceCreator();
  65. case "bcat:u":
  66. return new Bcat.IServiceCreator();
  67. case "bcat:s":
  68. return new Bcat.IServiceCreator();
  69. case "bsd:s":
  70. return new IClient(true);
  71. case "bsd:u":
  72. return new IClient(false);
  73. case "caps:a":
  74. return new IAlbumAccessorService();
  75. case "caps:ss":
  76. return new IScreenshotService();
  77. case "csrng":
  78. return new IRandomInterface();
  79. case "es":
  80. return new IeTicketService();
  81. case "friend:a":
  82. return new Friend.IServiceCreator();
  83. case "friend:u":
  84. return new Friend.IServiceCreator();
  85. case "fsp-srv":
  86. return new IFileSystemProxy();
  87. case "hid":
  88. return new IHidServer(system);
  89. case "irs":
  90. return new IIrSensorServer(system.IirsSharedMem);
  91. case "ldr:ro":
  92. return new IRoInterface();
  93. case "hwopus":
  94. return new IHardwareOpusDecoderManager();
  95. case "lm":
  96. return new ILogService();
  97. case "mm:u":
  98. return new IRequest();
  99. case "ncm":
  100. return new IContentManager();
  101. case "nfp:user":
  102. return new IUserManager();
  103. case "nifm:u":
  104. return new Nifm.IStaticService();
  105. case "ns:am":
  106. return new IApplicationManagerInterface();
  107. case "ns:am2":
  108. case "ns:ec":
  109. return new IServiceGetterInterface();
  110. case "ns:su":
  111. return new ISystemUpdateInterface();
  112. case "ns:vm":
  113. return new IVulnerabilityManagerInterface();
  114. case "nvdrv":
  115. return new INvDrvServices(system);
  116. case "nvdrv:a":
  117. return new INvDrvServices(system);
  118. case "pctl:s":
  119. return new IParentalControlServiceFactory();
  120. case "pctl:r":
  121. return new IParentalControlServiceFactory();
  122. case "pctl:a":
  123. return new IParentalControlServiceFactory();
  124. case "pctl":
  125. return new IParentalControlServiceFactory();
  126. case "pl:u":
  127. return new ISharedFontManager();
  128. case "pm:shell":
  129. return new IShellInterface();
  130. case "prepo:a":
  131. return new IPrepoService();
  132. case "prepo:u":
  133. return new IPrepoService();
  134. case "psm":
  135. return new IPsmServer();
  136. case "set":
  137. return new ISettingsServer();
  138. case "set:sys":
  139. return new ISystemSettingsServer();
  140. case "sfdnsres":
  141. return new IResolver();
  142. case "sm:":
  143. return new IUserInterface();
  144. case "ssl":
  145. return new ISslService();
  146. case "time:a":
  147. return new Time.IStaticService();
  148. case "time:s":
  149. return new Time.IStaticService();
  150. case "time:u":
  151. return new Time.IStaticService();
  152. case "vi:m":
  153. return new IManagerRootService();
  154. case "vi:s":
  155. return new ISystemRootService();
  156. case "vi:u":
  157. return new IApplicationRootService();
  158. }
  159. if (ServiceConfiguration.IgnoreMissingServices)
  160. {
  161. Logger.PrintWarning(LogClass.Service, $"Missing service {name} ignored");
  162. return new DummyService(name);
  163. }
  164. throw new NotImplementedException(name);
  165. }
  166. }
  167. }