Exemple #1
0
 public ChunkVariantInfo(InstallChunkInfo installChunkInfo,
                         CatalogFile.ChunkEntry entry,
                         CatalogFile.CryptoInfo?cryptoInfo)
 {
     this._InstallChunkInfo = installChunkInfo;
     this._Entry            = entry;
     this._CryptoInfo       = cryptoInfo;
 }
Exemple #2
0
        private bool AddInstallChunk(VfsFormats.Layout.InstallChunk installChunk)
        {
            if (this._InstallChunkInfo.ContainsKey(installChunk.Id) == true)
            {
                return(true);
            }

            var basePath    = Path.Combine(this._DataPath, Helpers.FilterPath(installChunk.InstallBundle));
            var catalogPath = Path.Combine(basePath, "cas.cat");

            if (File.Exists(catalogPath) == false)
            {
                return(false);
            }

            var catalog          = CatalogFile.Read(catalogPath);
            var installChunkInfo = new InstallChunkInfo(basePath);

            foreach (var entry in catalog.ChunkEntries)
            {
                var variantInfo = new ChunkVariantInfo(installChunkInfo, entry, null);

                List <ChunkVariantInfo> chunkVariants;
                if (this._ChunkInfo.TryGetValue(entry.SHA1.Text, out chunkVariants) == false)
                {
                    chunkVariants = this._ChunkInfo[entry.SHA1.Text] = new List <ChunkVariantInfo>();
                }

                chunkVariants.Add(variantInfo);
            }

            foreach (var entry in catalog.EncryptedChunkEntries)
            {
                var variantInfo = new ChunkVariantInfo(installChunkInfo, entry.Chunk, entry.CryptoInfo);

                List <ChunkVariantInfo> chunkVariants;
                if (this._ChunkInfo.TryGetValue(entry.Chunk.SHA1.Text, out chunkVariants) == false)
                {
                    chunkVariants = this._ChunkInfo[entry.Chunk.SHA1.Text] = new List <ChunkVariantInfo>();
                }

                chunkVariants.Add(variantInfo);
            }

            this._InstallChunkInfo.Add(installChunk.Id, installChunkInfo);
            return(true);
        }