IMultiCommitManager.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using LibHac;
  2. using LibHac.Common;
  3. using Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy;
  4. namespace Ryujinx.HLE.HOS.Services.Fs
  5. {
  6. class IMultiCommitManager : DisposableIpcService // 6.0.0+
  7. {
  8. private SharedRef<LibHac.FsSrv.Sf.IMultiCommitManager> _baseCommitManager;
  9. public IMultiCommitManager(ref SharedRef<LibHac.FsSrv.Sf.IMultiCommitManager> baseCommitManager)
  10. {
  11. _baseCommitManager = SharedRef<LibHac.FsSrv.Sf.IMultiCommitManager>.CreateMove(ref baseCommitManager);
  12. }
  13. [CommandHipc(1)] // 6.0.0+
  14. // Add(object<nn::fssrv::sf::IFileSystem>)
  15. public ResultCode Add(ServiceCtx context)
  16. {
  17. using SharedRef<LibHac.FsSrv.Sf.IFileSystem> fileSystem = GetObject<IFileSystem>(context, 0).GetBaseFileSystem();
  18. Result result = _baseCommitManager.Get.Add(ref fileSystem.Ref());
  19. return (ResultCode)result.Value;
  20. }
  21. [CommandHipc(2)] // 6.0.0+
  22. // Commit()
  23. public ResultCode Commit(ServiceCtx context)
  24. {
  25. Result result = _baseCommitManager.Get.Commit();
  26. return (ResultCode)result.Value;
  27. }
  28. protected override void Dispose(bool isDisposing)
  29. {
  30. if (isDisposing)
  31. {
  32. _baseCommitManager.Destroy();
  33. }
  34. }
  35. }
  36. }