IMultiCommitManager.cs 1.2 KB

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