private IThrottlingPolicy GetParentThrottlingPolicyFromAD(ThrottlingPolicy policy)
        {
            IThrottlingPolicy result;

            switch (this.ThrottlingPolicy.ThrottlingPolicyScope)
            {
            case ThrottlingPolicyScopeType.Regular:
            {
                ThrottlingPolicy throttlingPolicy = EffectiveThrottlingPolicy.ReadOrganizationThrottlingPolicyFromAD(policy.OrganizationId);
                if (throttlingPolicy == null)
                {
                    throttlingPolicy = EffectiveThrottlingPolicy.ReadGlobalThrottlingPolicyFromAD();
                }
                result = throttlingPolicy.GetEffectiveThrottlingPolicy(false);
                break;
            }

            case ThrottlingPolicyScopeType.Organization:
                result = EffectiveThrottlingPolicy.ReadGlobalThrottlingPolicyFromAD().GetEffectiveThrottlingPolicy(false);
                break;

            case ThrottlingPolicyScopeType.Global:
                result = FallbackThrottlingPolicy.GetSingleton();
                break;

            default:
                throw new NotSupportedException(string.Format("Unsupported enum value {0}.", this.ThrottlingPolicy.ThrottlingPolicyScope));
            }
            return(result);
        }
        private void ResetGlobalThrottlingPolicySettings()
        {
            this.rootOrgSession.SessionSettings.IsSharedConfigChecked = true;
            ThrottlingPolicy globalThrottlingPolicy = this.rootOrgSession.GetGlobalThrottlingPolicy();

            if (globalThrottlingPolicy == null)
            {
                base.WriteError(new ManagementObjectNotFoundException(Strings.ErrorGlobalThrottlingPolicyNotFound), ErrorCategory.InvalidResult, null);
            }
            globalThrottlingPolicy.CloneThrottlingSettingsFrom(FallbackThrottlingPolicy.GetSingleton());
            this.SaveObject(globalThrottlingPolicy);
        }
        private void InstallGlobalThrottlingPolicy()
        {
            string text = "GlobalThrottlingPolicy_" + Guid.NewGuid().ToString("D");

            base.WriteVerbose(Strings.InstallingGlobalThrottlingPolicy(text));
            ThrottlingPolicy throttlingPolicy = new ThrottlingPolicy();

            throttlingPolicy.CloneThrottlingSettingsFrom(FallbackThrottlingPolicy.GetSingleton());
            throttlingPolicy.ThrottlingPolicyScope = ThrottlingPolicyScopeType.Global;
            throttlingPolicy.SetId(this.configurationSession, new ADObjectId("CN=Global Settings"), text);
            if (base.CurrentOrganizationId != null)
            {
                throttlingPolicy.OrganizationId = base.CurrentOrganizationId;
            }
            else
            {
                throttlingPolicy.OrganizationId = base.ExecutingUserOrganizationId;
            }
            this.SaveObject(throttlingPolicy);
        }
        private IThrottlingPolicy GetParentThrottlingPolicyFromCache(ThrottlingPolicy policy)
        {
            IThrottlingPolicy result;

            switch (policy.ThrottlingPolicyScope)
            {
            case ThrottlingPolicyScopeType.Regular:
                result = ThrottlingPolicyCache.Singleton.Get(this.ThrottlingPolicy.OrganizationId);
                break;

            case ThrottlingPolicyScopeType.Organization:
                result = ThrottlingPolicyCache.Singleton.GetGlobalThrottlingPolicy();
                break;

            case ThrottlingPolicyScopeType.Global:
                result = FallbackThrottlingPolicy.GetSingleton();
                break;

            default:
                throw new NotSupportedException(string.Format("Unsupported enum value {0}.", this.ThrottlingPolicy.ThrottlingPolicyScope));
            }
            return(result);
        }