예제 #1
0
파일: MS2File.cs 프로젝트: mechpaul/MS2Lib
 private MS2File(MS2FileInfoHeader infoHeader, MS2FileHeader header, MS2CryptoMode archiveCryptoMode, MemoryMappedFile dataFile)
 {
     this.InfoHeader           = infoHeader ?? throw new ArgumentNullException(nameof(infoHeader));
     this.Header               = header ?? throw new ArgumentNullException(nameof(header));
     this.ArchiveCryptoMode    = archiveCryptoMode;
     this.DataMemoryMappedFile = dataFile ?? throw new ArgumentNullException(nameof(dataFile));
     this.CompressionType      = this.Header.CompressionType;
     this.IsDataEncrypted      = true;
 }
예제 #2
0
파일: MS2File.cs 프로젝트: mechpaul/MS2Lib
        internal static async Task <MS2File> Load(MS2CryptoMode cryptoMode, Stream headerStream, Stream dataStream, MemoryMappedFile dataMemoryMappedFile)
        {
            MS2FileInfoHeader fileInfoHeader = await MS2FileInfoHeader.Load(headerStream).ConfigureAwait(false);

            MS2FileHeader fileHeader = await MS2FileHeader.Load(cryptoMode, dataStream).ConfigureAwait(false);

            DLogger.Write($"Id={fileInfoHeader.Id}-{fileHeader.Id}, CompressionId={fileHeader.CompressionType}, RootFolder={fileInfoHeader.RootFolderId}, Name={fileInfoHeader.Name}, Size={FileEx.FormatStorage(fileHeader.EncodedSize)}->{FileEx.FormatStorage(fileHeader.CompressedSize)}->{FileEx.FormatStorage(fileHeader.Size)}");

            var file = new MS2File(fileInfoHeader, fileHeader, cryptoMode, dataMemoryMappedFile);

            return(file);
        }
예제 #3
0
파일: MS2File.cs 프로젝트: mechpaul/MS2Lib
        private MS2File(MS2FileInfoHeader infoHeader, CompressionType compressionType, MS2CryptoMode archiveCryptoMode, Stream dataStream)
        {
            if (!dataStream.CanSeek)
            {
                throw new ArgumentException("Stream must be seekable.", nameof(dataStream));
            }

            this.InfoHeader        = infoHeader ?? throw new ArgumentNullException(nameof(infoHeader));
            this.ArchiveCryptoMode = archiveCryptoMode;
            this.DataStream        = dataStream ?? throw new ArgumentNullException(nameof(dataStream));
            this.CompressionType   = compressionType;
            this.IsDataEncrypted   = false;
        }
예제 #4
0
파일: MS2File.cs 프로젝트: mechpaul/MS2Lib
 public static MS2File Create(uint id, string pathInArchive, CompressionType compressionType, MS2CryptoMode archiveCryptoMode, Stream dataStream)
 => new MS2File(MS2FileInfoHeader.Create(id.ToString(), pathInArchive), compressionType, archiveCryptoMode, dataStream);