UpkManager.Domain.Models.UpkFile.Compression.DomainCompressedChunkBlock.BuildCompressedChunkBlockData C# (CSharp) Method

BuildCompressedChunkBlockData() public method

public BuildCompressedChunkBlockData ( ByteArrayReader reader ) : Task
reader UpkManager.Domain.Helpers.ByteArrayReader
return Task
    public async Task<int> BuildCompressedChunkBlockData(ByteArrayReader reader) {
      UncompressedSize = reader.Remaining;

      byte[] compressed = await reader.Compress();

      CompressedData = ByteArrayReader.CreateNew(compressed, 0);

      await CompressedData.Encrypt(); // TODO: Fix this to use the flag

      CompressedSize = CompressedData.Remaining;

      return CompressedSize + sizeof(int) * 2;
    }

Usage Example

        public async Task <int> BuildCompressedChunkHeader(ByteArrayReader reader, uint flags)
        {
            Signature = Signatures.Signature;
            BlockSize = 0x00020000;

            CompressedSize   = 0;
            UncompressedSize = reader.Remaining;

            int blockCount = (reader.Remaining + BlockSize - 1) / BlockSize;

            int builderSize = 0;

            Blocks.Clear();

            for (int i = 0; i < blockCount; ++i)
            {
                DomainCompressedChunkBlock block = new DomainCompressedChunkBlock();

                ByteArrayReader uncompressed = await reader.ReadByteArray(Math.Min(BlockSize, reader.Remaining));

                builderSize += await block.BuildCompressedChunkBlockData(uncompressed);

                CompressedSize += block.CompressedSize;

                Blocks.Add(block);
            }

            builderSize += sizeof(uint)
                           + sizeof(int) * 3;

            return(builderSize);
        }
All Usage Examples Of UpkManager.Domain.Models.UpkFile.Compression.DomainCompressedChunkBlock::BuildCompressedChunkBlockData