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); } }
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); } }