//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.ComponentModel;
using System.Web.Hosting;
using System.Web.Util;
using System.Web.Configuration;
using System.Web.Management;
using System.Web.Compilation;
using System.Security.Permissions;
/*
*/
public sealed class HealthMonitoringSection : ConfigurationSection {
const int MAX_HEARTBEAT_VALUE = Int32.MaxValue / 1000; // in sec; this value will be converted to ms and passed to Timer ctor, which takes a ms param
const bool DEFAULT_HEALTH_MONITORING_ENABLED = true;
const int DEFAULT_HEARTBEATINTERVAL = 0; // This was Zero in Machine.config and 60 in here
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propHeartbeatInterval =
new ConfigurationProperty("heartbeatInterval",
typeof(TimeSpan),
TimeSpan.FromSeconds((long)DEFAULT_HEARTBEATINTERVAL),
StdValidatorsAndConverters.TimeSpanSecondsConverter,
new TimeSpanValidator(TimeSpan.Zero, TimeSpan.FromSeconds(MAX_HEARTBEAT_VALUE)),
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propEnabled =
new ConfigurationProperty("enabled",
typeof(bool),
DEFAULT_HEALTH_MONITORING_ENABLED,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propBufferModes =
new ConfigurationProperty("bufferModes",
typeof(BufferModesCollection),
null,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propProviders =
new ConfigurationProperty("providers",
typeof(ProviderSettingsCollection),
null,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propProfileSettingsCollection =
new ConfigurationProperty("profiles",
typeof(ProfileSettingsCollection),
null,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propRuleSettingsCollection =
new ConfigurationProperty("rules",
typeof(RuleSettingsCollection),
null,
ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propEventMappingSettingsCollection =
new ConfigurationProperty("eventMappings",
typeof(EventMappingSettingsCollection),
null,
ConfigurationPropertyOptions.None);
static HealthMonitoringSection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propHeartbeatInterval);
_properties.Add(_propEnabled);
_properties.Add(_propBufferModes);
_properties.Add(_propProviders);
_properties.Add(_propProfileSettingsCollection);
_properties.Add(_propRuleSettingsCollection);
_properties.Add(_propEventMappingSettingsCollection);
}
public HealthMonitoringSection() {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("heartbeatInterval", DefaultValue = "00:00:00" /* DEFAULT_HEARTBEATINTERVAL */)]
[TypeConverter(typeof(TimeSpanSecondsConverter))]
[TimeSpanValidator(MinValueString = "00:00:00", MaxValueString = "24.20:31:23")]
public TimeSpan HeartbeatInterval {
get {
return (TimeSpan)base[_propHeartbeatInterval];
}
set {
base[_propHeartbeatInterval] = value;
}
}
[ConfigurationProperty("enabled", DefaultValue = DEFAULT_HEALTH_MONITORING_ENABLED)]
public bool Enabled {
get {
return (bool)base[_propEnabled];
}
set {
base[_propEnabled] = value;
}
}
[ConfigurationProperty("bufferModes")]
public BufferModesCollection BufferModes {
get {
return (BufferModesCollection)base[_propBufferModes];
}
}
[ConfigurationProperty("providers")]
public ProviderSettingsCollection Providers {
get {
return (ProviderSettingsCollection)base[_propProviders];
}
}
[ConfigurationProperty("profiles")]
public ProfileSettingsCollection Profiles {
get {
return (ProfileSettingsCollection)base[_propProfileSettingsCollection];
}
}
[ConfigurationProperty("rules")]
public RuleSettingsCollection Rules {
get {
return (RuleSettingsCollection)base[_propRuleSettingsCollection];
}
}
[ConfigurationProperty("eventMappings")]
public EventMappingSettingsCollection EventMappings {
get {
return (EventMappingSettingsCollection)base[_propEventMappingSettingsCollection];
}
}
} // class HealthMonitoringSection
}