コード例 #1
0
        internal bool CalculatePolicyDistributionStatus(UnifiedPolicyStorageBase storage, Workload appliedWorkload, IEnumerable <UnifiedPolicySettingStatus> statuses, ref List <PolicyDistributionErrorDetails> distributionErrors, ref DateTime?lastStatusUpdateTime)
        {
            bool flag = false;
            Dictionary <Workload, UnifiedPolicySettingStatus> dictionary = new Dictionary <Workload, UnifiedPolicySettingStatus>();
            Guid policyVersion = storage.PolicyVersion;

            foreach (UnifiedPolicySettingStatus unifiedPolicySettingStatus in statuses)
            {
                this.WriteVerbose(Strings.VerboseDumpStatusObject(unifiedPolicySettingStatus.Container, unifiedPolicySettingStatus.SettingType, storage.Guid.ToString(), storage.PolicyVersion.ToString(), ((UnifiedPolicyErrorCode)unifiedPolicySettingStatus.ErrorCode).ToString(), unifiedPolicySettingStatus.ObjectVersion.ToString()), false);
                if (unifiedPolicySettingStatus.ObjectVersion == policyVersion)
                {
                    Workload workloadFromString = PolicySettingStatusHelpers.GetWorkloadFromString(unifiedPolicySettingStatus.Container);
                    if (!dictionary.ContainsKey(workloadFromString))
                    {
                        dictionary.Add(workloadFromString, unifiedPolicySettingStatus);
                    }
                }
            }
            IEnumerable <Workload> enumerable = Enum.GetValues(typeof(Workload)).Cast <Workload>();

            foreach (Workload workload in enumerable)
            {
                if (workload != Workload.None && appliedWorkload.HasFlag(workload))
                {
                    UnifiedPolicySettingStatus unifiedPolicySettingStatus2;
                    dictionary.TryGetValue(workload, out unifiedPolicySettingStatus2);
                    PolicyDistributionErrorDetails policyDistributionErrorDetails = this.CreatePolicyDistributionError(workload, storage, unifiedPolicySettingStatus2);
                    flag = (flag || (unifiedPolicySettingStatus2 == null && policyDistributionErrorDetails == null));
                    if (policyDistributionErrorDetails != null)
                    {
                        distributionErrors.Add(policyDistributionErrorDetails);
                    }
                    if (unifiedPolicySettingStatus2 != null && (lastStatusUpdateTime == null || lastStatusUpdateTime.Value < unifiedPolicySettingStatus2.WhenProcessedUTC))
                    {
                        lastStatusUpdateTime = new DateTime?(unifiedPolicySettingStatus2.WhenProcessedUTC);
                    }
                }
            }
            return(flag);
        }