コード例 #1
0
        public async Task Load(IFileSystem fileSystem, UPath filePath, ITemporaryStreamProvider temporaryStreamProvider,
                               IProgressContext progress)
        {
            var fileStream = await fileSystem.OpenFileAsync(filePath);

            Files = _pack.Load(fileStream);
        }
コード例 #2
0
        /// <summary>
        /// Creates a new instance of <see cref="LoadContext"/>.
        /// </summary>
        /// <param name="temporaryStreamProvider">The provider for temporary streams.</param>
        /// <param name="progress">The progress for this action.</param>
        /// <param name="dialogManager">The dialog manager for this action.</param>
        public LoadContext(ITemporaryStreamProvider temporaryStreamProvider, IProgressContext progress, IDialogManager dialogManager)
        {
            ContractAssertions.IsNotNull(temporaryStreamProvider, nameof(temporaryStreamProvider));
            ContractAssertions.IsNotNull(progress, nameof(progress));
            ContractAssertions.IsNotNull(dialogManager, nameof(dialogManager));

            TemporaryStreamManager = temporaryStreamProvider;
            ProgressContext        = progress;
            DialogManager          = dialogManager;
        }
コード例 #3
0
        public async void Load(IFileSystem fileSystem, UPath filePath, ITemporaryStreamProvider temporaryStreamProvider)
        {
            _files = new List <ArchiveFileInfo>();

            var inputFile = await fileSystem.OpenFileAsync(filePath);

            using var indexBr           = new BinaryReaderX(await fileSystem.OpenFileAsync("index.bin"));
            indexBr.BaseStream.Position = 4;

            var fileCount = indexBr.ReadInt32();

            for (var i = 0; i < fileCount; i++)
            {
                var fileName = i == 0 ? "archive.test" : "index.bin";
                _files.Add(new ArchiveFileInfo(new SubStream(inputFile, indexBr.ReadInt32(), indexBr.ReadInt32()), fileName));
            }
        }
コード例 #4
0
        /// <summary>
        /// Creates a new instance of <see cref="IdentifyContext"/>.
        /// </summary>
        /// <param name="temporaryStreamProvider">The provider for temporary streams.</param>
        public IdentifyContext(ITemporaryStreamProvider temporaryStreamProvider)
        {
            ContractAssertions.IsNotNull(temporaryStreamProvider, nameof(temporaryStreamProvider));

            TemporaryStreamManager = temporaryStreamProvider;
        }
コード例 #5
0
        public async Task <bool> IdentifyAsync(IFileSystem fileSystem, UPath filePath, ITemporaryStreamProvider temporaryStreamProvider)
        {
            // Do files exist
            if (!fileSystem.FileExists(filePath) || !fileSystem.FileExists("index.bin"))
            {
                return(false);
            }

            // Open files
            var archiveFile = await fileSystem.OpenFileAsync(filePath);

            var indexFile = await fileSystem.OpenFileAsync("index.bin");

            // Identify file
            return(CheckTestRequirements(archiveFile, indexFile));
        }
コード例 #6
0
 public override Task <Stream> GetFileData(ITemporaryStreamProvider temporaryStreamProvider = null, IProgressContext progress = null)
 {
     return(Task.FromResult(ContentChanged ? FileData : _chunkStream));
 }
コード例 #7
0
        public async Task <bool> IdentifyAsync(IFileSystem fileSystem, UPath filePath, ITemporaryStreamProvider temporaryStreamProvider)
        {
            var fileStream = await fileSystem.OpenFileAsync(filePath);

            using var br = new BinaryReaderX(fileStream);

            return(br.ReadString(4) == "P@CK");
        }