public Result OpenSaveDataInfoReaderWithFilter(out ISaveDataInfoReader infoReader, SaveDataSpaceId spaceId, ref SaveDataFilter filter) { infoReader = default; // Missing permission check SaveDataIndexerReader indexReader = default; try { Result rc = FsServer.SaveDataIndexerManager.GetSaveDataIndexer(out indexReader, spaceId); if (rc.IsFailure()) { return(rc); } rc = indexReader.Indexer.OpenSaveDataInfoReader(out ISaveDataInfoReader baseInfoReader); if (rc.IsFailure()) { return(rc); } var filterInternal = new SaveDataFilterInternal(ref filter, spaceId); infoReader = new SaveDataInfoFilterReader(baseInfoReader, ref filterInternal); return(Result.Success); } finally { indexReader.Dispose(); } }
public Result OpenSaveDataInfoReader(out ISaveDataInfoReader infoReader) { if (IsKeyValueSet) { infoReader = new SaveDataIndexerLiteInfoReader(ref _key, ref _value); } else { infoReader = new SaveDataIndexerLiteInfoReader(); } return(Result.Success); }
public Result OpenSaveDataInfoReader(out ISaveDataInfoReader infoReader) { infoReader = default; // Missing permission check SaveDataIndexerReader indexReader = default; try { Result rc = FsServer.SaveDataIndexerManager.GetSaveDataIndexer(out indexReader, SaveDataSpaceId.System); if (rc.IsFailure()) { return(rc); } return(indexReader.Indexer.OpenSaveDataInfoReader(out infoReader)); } finally { indexReader.Dispose(); } }
public Result Read(out long readCount, Span <byte> saveDataInfoBuffer) { readCount = default; Span <SaveDataInfo> outInfo = MemoryMarshal.Cast <byte, SaveDataInfo>(saveDataInfoBuffer); SaveDataInfo tempInfo = default; Span <byte> tempInfoBytes = SpanHelpers.AsByteSpan(ref tempInfo); ISaveDataInfoReader reader = Reader.Target; int count = 0; while (count < outInfo.Length) { Result rc = reader.Read(out long baseReadCount, tempInfoBytes); if (rc.IsFailure()) { return(rc); } if (baseReadCount == 0) { break; } if (Filter.Matches(ref tempInfo)) { outInfo[count] = tempInfo; count++; } } readCount = count; return(Result.Success); }
public SaveDataInfoFilterReader(ISaveDataInfoReader reader, ref SaveDataFilterInternal filter) { Reader = reader; Filter = filter; }