public CommitInfo(CommitOption option, ICollection <ITreeNodePath> dirtyItemList, ICollection <ITreeNodePath> dirtyPropertiesList, ICollection <IDocument> dirtyDocumentList) { this.Option = option; this.DirtyItemList = dirtyItemList; this.DirtyPropertiesList = dirtyPropertiesList; this.DirtyDocumentList = dirtyDocumentList; }
public static Result Commit(this FileSystemClient fs, U8Span mountName, CommitOption option) { Result rc; FileSystemAccessor fileSystem; Span <byte> logBuffer = stackalloc byte[0x40]; if (fs.Impl.IsEnabledAccessLog()) { Tick start = fs.Hos.Os.GetSystemTick(); rc = fs.Impl.Find(out fileSystem, mountName); Tick end = fs.Hos.Os.GetSystemTick(); var sb = new U8StringBuilder(logBuffer, true); sb.Append(LogName).Append(mountName).Append(LogCommitOption).AppendFormat((int)option.Flags, 'X'); logBuffer = sb.Buffer; fs.Impl.OutputAccessLogUnlessResultSuccess(rc, start, end, null, new U8Span(logBuffer)); } else { rc = fs.Impl.Find(out fileSystem, mountName); } fs.Impl.AbortIfNeeded(rc); if (rc.IsFailure()) { return(rc); } if (fs.Impl.IsEnabledAccessLog() && fileSystem.IsEnabledAccessLog()) { Tick start = fs.Hos.Os.GetSystemTick(); rc = RunCommit(fs, option, fileSystem); Tick end = fs.Hos.Os.GetSystemTick(); fs.Impl.OutputAccessLog(rc, start, end, null, new U8Span(logBuffer)); } else { rc = RunCommit(fs, option, fileSystem); } fs.Impl.AbortIfNeeded(rc); return(rc);
static Result RunCommit(FileSystemClient fs, CommitOption option, FileSystemAccessor fileSystem) { if ((option.Flags & (CommitOptionFlag.ClearRestoreFlag | CommitOptionFlag.SetRestoreFlag)) == 0) { return(fileSystem.Commit()); } if (option.Flags != CommitOptionFlag.ClearRestoreFlag && option.Flags != CommitOptionFlag.SetRestoreFlag) { return(ResultFs.InvalidCommitOption.Log()); } Result rc = fileSystem.GetSaveDataAttribute(out SaveDataAttribute attribute); if (rc.IsFailure()) { return(rc); } if (attribute.ProgramId == SaveData.InvalidProgramId) { attribute.ProgramId = SaveData.AutoResolveCallerProgramId; } var extraDataMask = new SaveDataExtraData(); extraDataMask.Flags = SaveDataFlags.Restore; var extraData = new SaveDataExtraData(); extraDataMask.Flags = option.Flags == CommitOptionFlag.SetRestoreFlag ? SaveDataFlags.Restore : SaveDataFlags.None; return(fs.Impl.WriteSaveDataFileSystemExtraData(SaveDataSpaceId.User, in attribute, in extraData, in extraDataMask)); }