Esempio n. 1
0
 public async Task DecodeAsync(IFileDataOutputHandler outputHandler)
 {
     await DecodeAsync(_dataInfo.FileLayout.Directories, new List <File>(), outputHandler);
 }
Esempio n. 2
0
        public async Task DecodeAsync(IEnumerable <Directory> directories, IEnumerable <File> files, IFileDataOutputHandler outputHandler)
        {
            var directoryList = directories.ToList();
            var fileList      = files.Concat(directoryList.SelectMany(directory => directory.Files)).Distinct().ToList();
            IReadOnlyDictionary <File, Stream> fileContentStreams = await _imageDecoder.DecodeFileContentsAsync(_dataInfo, _imageReaderStream, fileList);

            foreach (Directory directory in directoryList.Concat(fileList.Select(_dataInfo.FileLayout.GetDirectoryByFile)).Distinct())
            {
                outputHandler.HandleDirectory(directory);
            }

            foreach (KeyValuePair <File, Stream> fileData in fileContentStreams)
            {
                await outputHandler.HandleFileData(
                    _dataInfo.FileLayout.GetDirectoryByFile(fileData.Key),
                    fileData.Key,
                    fileData.Value);
            }
        }