Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        public Result OpenSaveDataInfoReader(out ISaveDataInfoReader infoReader)
        {
            if (IsKeyValueSet)
            {
                infoReader = new SaveDataIndexerLiteInfoReader(ref _key, ref _value);
            }
            else
            {
                infoReader = new SaveDataIndexerLiteInfoReader();
            }

            return(Result.Success);
        }
Ejemplo n.º 3
0
        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();
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public SaveDataInfoFilterReader(ISaveDataInfoReader reader, ref SaveDataFilterInternal filter)
 {
     Reader = reader;
     Filter = filter;
 }