private async Task <DataPackage> GetDataPackageAsync( DataPackageType dataPackageType, ServiceManifest serviceManifest, StoreLayoutSpecification storeLayoutSpecification, TimeSpan timeout) { var checksumFile = storeLayoutSpecification.GetDataPackageChecksumFile( this.ApplicationTypeName, serviceManifest.ServiceManifestType.Name, dataPackageType.Name, dataPackageType.Version); var checksumTask = await this.ImageStoreWrapper.TryGetFromStoreAsync(checksumFile, timeout); return(new DataPackage(dataPackageType) { Checksum = checksumTask.Item1 /*checksumValue*/ }); }
private async Task <ServiceManifest> GetServiceManifestAsync( ApplicationManifestTypeServiceManifestImport serviceManifestImport, StoreLayoutSpecification storeLayoutSpecification, TimeSpan timeout) { TimeoutHelper timeoutHelper = new TimeoutHelper(timeout); string serviceManifestFile = storeLayoutSpecification.GetServiceManifestFile( this.ApplicationTypeName, serviceManifestImport.ServiceManifestRef.ServiceManifestName, serviceManifestImport.ServiceManifestRef.ServiceManifestVersion); string checksumFile = storeLayoutSpecification.GetServiceManifestChecksumFile( this.ApplicationTypeName, serviceManifestImport.ServiceManifestRef.ServiceManifestName, serviceManifestImport.ServiceManifestRef.ServiceManifestVersion); var getServiceManifestTask = this.ImageStoreWrapper.GetFromStoreAsync <ServiceManifestType>(serviceManifestFile, timeoutHelper.GetRemainingTime()); var getChecksumTask = this.ImageStoreWrapper.TryGetFromStoreAsync(checksumFile, timeoutHelper.GetRemainingTime()); await Task.WhenAll(getServiceManifestTask, getChecksumTask); timeoutHelper.ThrowIfExpired(); ServiceManifestType serviceManifestType = getServiceManifestTask.Result; string checksum = getChecksumTask.Result.Item1; ServiceManifest serviceManifest = new ServiceManifest(serviceManifestType) { Checksum = checksum }; List <Task <CodePackage> > codePackageTaskList = new List <Task <CodePackage> >(); TimeSpan remainingTime = timeoutHelper.GetRemainingTime(); foreach (CodePackageType codePackageType in serviceManifestType.CodePackage) { codePackageTaskList.Add(this.GetCodePackageAsync(codePackageType, serviceManifest, storeLayoutSpecification, remainingTime)); } List <Task <ConfigPackage> > configPackageTaskList = new List <Task <ConfigPackage> >(); if (serviceManifestType.ConfigPackage != null) { foreach (ConfigPackageType configPackageType in serviceManifestType.ConfigPackage) { configPackageTaskList.Add(this.GetConfigPackageAsync(configPackageType, serviceManifest, storeLayoutSpecification, remainingTime)); } } List <Task <DataPackage> > dataPackageTaskList = new List <Task <DataPackage> >(); if (serviceManifestType.DataPackage != null) { foreach (DataPackageType dataPackageType in serviceManifestType.DataPackage) { dataPackageTaskList.Add(this.GetDataPackageAsync(dataPackageType, serviceManifest, storeLayoutSpecification, remainingTime)); } } List <Task> packageTasks = new List <Task>(); packageTasks.AddRange(codePackageTaskList); packageTasks.AddRange(configPackageTaskList); packageTasks.AddRange(dataPackageTaskList); await Task.WhenAll(packageTasks); codePackageTaskList.ForEach(task => serviceManifest.CodePackages.Add(task.Result)); configPackageTaskList.ForEach(task => serviceManifest.ConfigPackages.Add(task.Result)); dataPackageTaskList.ForEach(task => serviceManifest.DataPackages.Add(task.Result)); return(serviceManifest); }