Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Log / System / IO / Log / LogPolicy.cs / 1 / LogPolicy.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IO.Log { public sealed class LogPolicy { [Flags] enum ModifiedFields { None = 0x00, MinimumExtentCount = 0x01, MaximumExtentCount = 0x02, GrowthRate = 0x04, PinnedTailThreshold = 0x08, AutoShrinkPercentage = 0x10, NewExtentPrefix = 0x20, NextExtentSuffix = 0x40, AutoGrow = 0x80, } LogStore store; ModifiedFields modifiedFields; int minimumExtentCount; int maximumExtentCount; PolicyUnit growthRate; PolicyUnit pinnedTailThreshold; int autoShrinkPercentage; string newExtentPrefix; long nextExtentSuffix; bool autoGrow; internal LogPolicy(LogStore logStore) { this.store = logStore; Refresh(); } public bool AutoGrow { get { return this.autoGrow; } set { this.autoGrow = value; this.modifiedFields |= ModifiedFields.AutoGrow; } } public int MinimumExtentCount { get { return this.minimumExtentCount; } set { if (value < 2) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentOutOfRange("value")); this.minimumExtentCount = value; this.modifiedFields |= ModifiedFields.MinimumExtentCount; } } public int MaximumExtentCount { get { return this.maximumExtentCount; } set { if (value < 2) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentOutOfRange("value")); this.maximumExtentCount = value; this.modifiedFields |= ModifiedFields.MaximumExtentCount; } } public PolicyUnit GrowthRate { get { return this.growthRate; } set { this.growthRate = value; this.modifiedFields |= ModifiedFields.GrowthRate; } } public PolicyUnit PinnedTailThreshold { get { return this.pinnedTailThreshold; } set { this.pinnedTailThreshold = value; this.modifiedFields |= ModifiedFields.PinnedTailThreshold; } } public int AutoShrinkPercentage { get { return this.autoShrinkPercentage; } set { if ((value < 0) || (value > 100)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentOutOfRange("value")); this.autoShrinkPercentage = value; this.modifiedFields |= ModifiedFields.AutoShrinkPercentage; } } public string NewExtentPrefix { get { return this.newExtentPrefix; } set { #pragma warning suppress 56507 if (value == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentNull("value")); #pragma warning suppress 56507 if ((value.Length == 0) || (value.Length > Const.MAX_PATH)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentOutOfRange("value")); this.newExtentPrefix = value; this.modifiedFields |= ModifiedFields.NewExtentPrefix; } } public long NextExtentSuffix { get { return this.nextExtentSuffix; } set { if (value < 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentOutOfRange("value")); this.nextExtentSuffix = value; this.modifiedFields |= ModifiedFields.NextExtentSuffix; } } public void Commit() { CommitMaximumSize(); CommitMinimumSize(); CommitGrowthRate(); CommitPinnedTailThreshold(); CommitAutoShrinkPercentage(); CommitAutoGrow(); CommitNewExtentPrefix(); CommitNextExtentSuffix(); } public void Refresh() { RefreshMaximumSize(); RefreshMinimumSize(); RefreshGrowthRate(); RefreshPinnedTailThreshold(); RefreshAutoShrinkPercentage(); RefreshAutoGrow(); RefreshNewExtentPrefix(); RefreshNextExtentSuffix(); } void CommitAutoGrow() { if (0 != (this.modifiedFields & ModifiedFields.AutoGrow)) { CLFS_MGMT_POLICY_AUTOGROW policy; policy = new CLFS_MGMT_POLICY_AUTOGROW( Const.LOG_POLICY_OVERWRITE | Const.LOG_POLICY_PERSIST); policy.Enabled = (uint)(this.autoGrow ? 1 : 0); UnsafeNativeMethods.InstallLogPolicy(this.store.Handle, ref policy); this.modifiedFields &= ~ModifiedFields.AutoGrow; } } void CommitMaximumSize() { if (0 != (this.modifiedFields & ModifiedFields.MaximumExtentCount)) { CLFS_MGMT_POLICY_MAXIMUMSIZE policy; policy = new CLFS_MGMT_POLICY_MAXIMUMSIZE( Const.LOG_POLICY_OVERWRITE | Const.LOG_POLICY_PERSIST); policy.Containers = (uint)this.maximumExtentCount; UnsafeNativeMethods.InstallLogPolicy(this.store.Handle, ref policy); this.modifiedFields &= ~ModifiedFields.MaximumExtentCount; } } void CommitMinimumSize() { if (0 != (this.modifiedFields & ModifiedFields.MinimumExtentCount)) { CLFS_MGMT_POLICY_MINIMUMSIZE policy; policy = new CLFS_MGMT_POLICY_MINIMUMSIZE( Const.LOG_POLICY_OVERWRITE | Const.LOG_POLICY_PERSIST); policy.Containers = (uint)this.minimumExtentCount; UnsafeNativeMethods.InstallLogPolicy(this.store.Handle, ref policy); this.modifiedFields &= ~ModifiedFields.MinimumExtentCount; } } void CommitGrowthRate() { if (0 != (this.modifiedFields & ModifiedFields.GrowthRate)) { CLFS_MGMT_POLICY_GROWTHRATE policy; policy = new CLFS_MGMT_POLICY_GROWTHRATE( Const.LOG_POLICY_OVERWRITE | Const.LOG_POLICY_PERSIST); if (this.growthRate.Type == PolicyUnitType.Extents) { policy.AbsoluteGrowthInContainers = (uint)this.growthRate.Value; policy.RelativeGrowthPercentage = 0; } else { policy.RelativeGrowthPercentage = (uint)this.growthRate.Value; policy.AbsoluteGrowthInContainers = 0; } UnsafeNativeMethods.InstallLogPolicy(this.store.Handle, ref policy); this.modifiedFields &= ~ModifiedFields.GrowthRate; } } void CommitPinnedTailThreshold() { if (0 != (this.modifiedFields & ModifiedFields.PinnedTailThreshold)) { CLFS_MGMT_POLICY_LOGTAIL policy; policy = new CLFS_MGMT_POLICY_LOGTAIL( Const.LOG_POLICY_OVERWRITE | Const.LOG_POLICY_PERSIST); if (this.pinnedTailThreshold.Type == PolicyUnitType.Extents) { policy.MinimumAvailableContainers = (uint)this.pinnedTailThreshold.Value; policy.MinimumAvailablePercentage = 0; } else { policy.MinimumAvailablePercentage = (uint)this.pinnedTailThreshold.Value; policy.MinimumAvailableContainers = 0; } UnsafeNativeMethods.InstallLogPolicy(this.store.Handle, ref policy); this.modifiedFields &= ~ModifiedFields.PinnedTailThreshold; } } void CommitAutoShrinkPercentage() { if (0 != (this.modifiedFields & ModifiedFields.AutoShrinkPercentage)) { CLFS_MGMT_POLICY_AUTOSHRINK policy; policy = new CLFS_MGMT_POLICY_AUTOSHRINK( Const.LOG_POLICY_OVERWRITE | Const.LOG_POLICY_PERSIST); policy.Percentage = (uint)this.autoShrinkPercentage; UnsafeNativeMethods.InstallLogPolicy(this.store.Handle, ref policy); this.modifiedFields &= ~ModifiedFields.AutoShrinkPercentage; } } void CommitNewExtentPrefix() { if (0 != (this.modifiedFields & ModifiedFields.NewExtentPrefix)) { CLFS_MGMT_POLICY_NEWCONTAINERPREFIX policy; policy = new CLFS_MGMT_POLICY_NEWCONTAINERPREFIX( Const.LOG_POLICY_OVERWRITE | Const.LOG_POLICY_PERSIST); // The prefix length should not include the NULL terminator. // Including NULL terminator will cause the CLFS container // name to have embedded NULL and container creation will fail. policy.PrefixLengthInBytes = (ushort)((this.newExtentPrefix.Length) * 2); policy.PrefixString = this.newExtentPrefix; UnsafeNativeMethods.InstallLogPolicy(this.store.Handle, ref policy); this.modifiedFields &= ~ModifiedFields.NewExtentPrefix; } } void CommitNextExtentSuffix() { if (0 != (this.modifiedFields & ModifiedFields.NextExtentSuffix)) { CLFS_MGMT_POLICY_NEXTCONTAINERSUFFIX policy; policy = new CLFS_MGMT_POLICY_NEXTCONTAINERSUFFIX( Const.LOG_POLICY_OVERWRITE | Const.LOG_POLICY_PERSIST); policy.NextContainerSuffix = (ulong)this.nextExtentSuffix; UnsafeNativeMethods.InstallLogPolicy(this.store.Handle, ref policy); this.modifiedFields &= ~ModifiedFields.NextExtentSuffix; } } void RefreshAutoGrow() { CLFS_MGMT_POLICY_AUTOGROW policy; UnsafeNativeMethods.QueryLogPolicy(this.store.Handle, out policy); this.autoGrow = (policy.Enabled != 0); this.modifiedFields &= ~ModifiedFields.AutoGrow; } void RefreshMaximumSize() { CLFS_MGMT_POLICY_MAXIMUMSIZE policy; UnsafeNativeMethods.QueryLogPolicy(this.store.Handle, out policy); this.maximumExtentCount = (int)policy.Containers; this.modifiedFields &= ~ModifiedFields.MaximumExtentCount; } void RefreshMinimumSize() { CLFS_MGMT_POLICY_MINIMUMSIZE policy; UnsafeNativeMethods.QueryLogPolicy(this.store.Handle, out policy); this.minimumExtentCount = (int)policy.Containers; this.modifiedFields &= ~ModifiedFields.MinimumExtentCount; } void RefreshGrowthRate() { CLFS_MGMT_POLICY_GROWTHRATE policy; UnsafeNativeMethods.QueryLogPolicy(this.store.Handle, out policy); if (policy.AbsoluteGrowthInContainers != 0) { this.growthRate = PolicyUnit.Extents( (int)policy.AbsoluteGrowthInContainers); } else { this.growthRate = PolicyUnit.Percentage( (int)policy.RelativeGrowthPercentage); } this.modifiedFields &= ~ModifiedFields.GrowthRate; } void RefreshPinnedTailThreshold() { CLFS_MGMT_POLICY_LOGTAIL policy; UnsafeNativeMethods.QueryLogPolicy(this.store.Handle, out policy); if (policy.MinimumAvailablePercentage != 0) { this.pinnedTailThreshold = PolicyUnit.Percentage( (int)policy.MinimumAvailablePercentage); } else { this.pinnedTailThreshold = PolicyUnit.Extents( (int)policy.MinimumAvailableContainers); } this.modifiedFields &= ~ModifiedFields.PinnedTailThreshold; } void RefreshAutoShrinkPercentage() { CLFS_MGMT_POLICY_AUTOSHRINK policy; UnsafeNativeMethods.QueryLogPolicy(this.store.Handle, out policy); this.autoShrinkPercentage = (int)policy.Percentage; this.modifiedFields &= ~ModifiedFields.AutoShrinkPercentage; } void RefreshNewExtentPrefix() { CLFS_MGMT_POLICY_NEWCONTAINERPREFIX policy; UnsafeNativeMethods.QueryLogPolicy(this.store.Handle, out policy); this.newExtentPrefix = policy.PrefixString; this.modifiedFields &= ~ModifiedFields.NewExtentPrefix; } void RefreshNextExtentSuffix() { CLFS_MGMT_POLICY_NEXTCONTAINERSUFFIX policy; UnsafeNativeMethods.QueryLogPolicy(this.store.Handle, out policy); this.nextExtentSuffix = (long)policy.NextContainerSuffix; this.modifiedFields &= ~ModifiedFields.NextExtentSuffix; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FormsIdentity.cs
- XmlCodeExporter.cs
- MimeTypeAttribute.cs
- MouseEventArgs.cs
- DetailsViewAutoFormat.cs
- DbParameterCollectionHelper.cs
- RemotingAttributes.cs
- DesignerActionPropertyItem.cs
- Substitution.cs
- OneWayBindingElementImporter.cs
- DataGridPageChangedEventArgs.cs
- CompensationParticipant.cs
- ModulesEntry.cs
- _DisconnectOverlappedAsyncResult.cs
- SafeNativeMethodsMilCoreApi.cs
- TextBoxAutomationPeer.cs
- SortDescription.cs
- TextFormatterHost.cs
- LocalFileSettingsProvider.cs
- PolicyStatement.cs
- X509CertificateRecipientClientCredential.cs
- ListMarkerSourceInfo.cs
- EventLogInternal.cs
- XPathCompileException.cs
- ObjectComplexPropertyMapping.cs
- ComplexType.cs
- PassportPrincipal.cs
- TextDecorationCollection.cs
- WindowsListViewItemStartMenu.cs
- XmlDocumentFragment.cs
- AnimationStorage.cs
- EncryptedKeyIdentifierClause.cs
- Permission.cs
- Trigger.cs
- AuthorizationRuleCollection.cs
- DiagnosticTrace.cs
- LocatorManager.cs
- PropertyGeneratedEventArgs.cs
- ContainerControl.cs
- DataGridTableCollection.cs
- DataTableReader.cs
- TreeBuilderXamlTranslator.cs
- HMACRIPEMD160.cs
- WSHttpBindingBaseElement.cs
- SpecialNameAttribute.cs
- StyleSheetDesigner.cs
- ObsoleteAttribute.cs
- SecureStringHasher.cs
- SafeArrayRankMismatchException.cs
- FieldReference.cs
- DataFieldCollectionEditor.cs
- ToolStripContentPanelRenderEventArgs.cs
- TextBlock.cs
- ColorInterpolationModeValidation.cs
- StoreItemCollection.Loader.cs
- TdsValueSetter.cs
- WindowsFormsHostPropertyMap.cs
- StringAnimationBase.cs
- ConfigurationValidatorAttribute.cs
- ImageSourceValueSerializer.cs
- CardSpaceSelector.cs
- HtmlInputHidden.cs
- MetadataCollection.cs
- ListMarkerLine.cs
- BmpBitmapDecoder.cs
- FontDriver.cs
- ViewStateException.cs
- UTF7Encoding.cs
- BStrWrapper.cs
- XmlDataSourceView.cs
- PersonalizationDictionary.cs
- HttpContext.cs
- Stacktrace.cs
- DataGridViewCheckBoxColumn.cs
- ReachPageContentSerializer.cs
- BitmapImage.cs
- Content.cs
- StoreItemCollection.cs
- TextServicesCompartmentEventSink.cs
- ToolTip.cs
- ViewStateException.cs
- GcSettings.cs
- MouseOverProperty.cs
- TextCharacters.cs
- MessageLoggingFilterTraceRecord.cs
- SynchronizedInputAdaptor.cs
- CacheOutputQuery.cs
- XamlInt32CollectionSerializer.cs
- HttpWriter.cs
- SelectManyQueryOperator.cs
- AffineTransform3D.cs
- CollectionDataContract.cs
- DomNameTable.cs
- JavaScriptObjectDeserializer.cs
- MouseActionConverter.cs
- RegexCaptureCollection.cs
- Margins.cs
- Matrix3D.cs
- PixelFormats.cs
- SecurityTokenResolver.cs