Beispiel #1
0
        private async Task <ExperimentStatusSummary> TryDownloadStatusSummary(int expId, int?refExpId)
        {
            string fileName = GetStatusSummaryFileName(expId, refExpId);
            var    blobName = GetStatusSummaryBlobName(fileName);
            var    blob     = summaryContainer.GetBlockBlobReference(blobName);

            try
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    await blob.DownloadToStreamAsync(ms);

                    ms.Position = 0;

                    using (ZipFile zip = ZipFile.Read(ms))
                    {
                        var zip_summary = zip[fileName];

                        using (MemoryStream mem = new MemoryStream((int)zip_summary.UncompressedSize))
                        {
                            zip_summary.Extract(mem);
                            mem.Position = 0;
                            return(ExperimentStatusSummaryStorage.Load(expId, refExpId, mem));
                        }
                    }
                }
            }
            catch (StorageException ex) when(ex.RequestInformation.HttpStatusCode == (int)System.Net.HttpStatusCode.NotFound)
            {
                return(null);
            }
        }
Beispiel #2
0
        private async Task UploadStatusSummary(ExperimentStatusSummary summary)
        {
            string fileName = GetStatusSummaryFileName(summary.Id, summary.ReferenceId);
            string blobName = GetStatusSummaryBlobName(fileName);
            var    blob     = summaryContainer.GetBlockBlobReference(blobName);

            using (Stream zipStream = new MemoryStream())
            {
                using (ZipFile zip = new ZipFile())
                    using (MemoryStream mem = new MemoryStream())
                    {
                        ExperimentStatusSummaryStorage.Save(summary, mem);

                        mem.Position = 0;
                        zip.AddEntry(fileName, mem);
                        zip.Save(zipStream);
                    }
                zipStream.Position = 0;
                await blob.UploadFromStreamAsync(zipStream, AccessCondition.GenerateEmptyCondition(), new BlobRequestOptions { RetryPolicy = retryPolicy }, null);
            }
        }