Microsoft.R.Host.Client.DataTransferSession.FetchAndDecompressBytesAsync C# (CSharp) Method

FetchAndDecompressBytesAsync() public method

Gets the data for a given blob (compressed) from R-Host and decompresses it. This method adds the blob for clean up by default.
public FetchAndDecompressBytesAsync ( IRBlobInfo blob, bool doCleanUp, IProgress progress, CancellationToken cancellationToken ) : Task
blob IRBlobInfo Blob from which the data is to be retrieved.
doCleanUp bool true to add blob upon transfer for cleanup on dispose, false to ignore it after transfer.
progress IProgress
cancellationToken System.Threading.CancellationToken
return Task
        public async Task<byte[]> FetchAndDecompressBytesAsync(IRBlobInfo blob, bool doCleanUp, IProgress<long> progress, CancellationToken cancellationToken) {
            byte[] data = null;
            using (MemoryStream compressed = new MemoryStream(await FetchBytesAsync(blob, false, progress, cancellationToken)))
            using (ZipArchive archive = new ZipArchive(compressed, ZipArchiveMode.Read)) {
                var entry = archive.GetEntry("data");
                using (Stream decompressedStream = entry.Open())
                using (MemoryStream ms = new MemoryStream()) {
                    await decompressedStream.CopyToAsync(ms, progress, cancellationToken);
                    data = ms.ToArray();
                }
            }

            if (doCleanUp) {
                _cleanup.Add(blob);
            }

            return data;
        }