SqlCacheDependencyDatabase.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Configuration / SqlCacheDependencyDatabase.cs / 2 / SqlCacheDependencyDatabase.cs

                            //------------------------------------------------------------------------------ 
// 
//     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.Diagnostics; 
    using System.Security.Permissions; 

    // class SqlCacheDependencySection 

    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    public sealed class SqlCacheDependencyDatabase : ConfigurationElement {
        private static readonly ConfigurationElementProperty s_elemProperty = new ConfigurationElementProperty(new CallbackValidator(typeof(SqlCacheDependencyDatabase), Validate)); 

        private static ConfigurationPropertyCollection _properties; 
        private static readonly ConfigurationProperty _propName; 
        private static readonly ConfigurationProperty _propConnectionStringName;
        private static readonly ConfigurationProperty _propPollTime; 

        static SqlCacheDependencyDatabase() {
            // Property initialization
            _properties = new ConfigurationPropertyCollection(); 

            _propName = 
                new ConfigurationProperty("name", 
                                            typeof(string),
                                            null, 
                                            null,
                                            StdValidatorsAndConverters.NonEmptyStringValidator,
                                            ConfigurationPropertyOptions.IsRequired |
                                            ConfigurationPropertyOptions.IsKey); 

            _propConnectionStringName = 
                new ConfigurationProperty("connectionStringName", 
                                            typeof(string),
                                            null, 
                                            null,
                                            StdValidatorsAndConverters.NonEmptyStringValidator,
                                            ConfigurationPropertyOptions.IsRequired);
 
            _propPollTime = new ConfigurationProperty("pollTime",
                                            typeof(int), 
                                            60000, 
                                            ConfigurationPropertyOptions.None);
 
            _properties.Add(_propName);
            _properties.Add(_propConnectionStringName);
            _properties.Add(_propPollTime);
        } 

        private int defaultPollTime;    // This may be set by the outer node to specify the default poll time (i.e. not specified on this node) 
 
        public SqlCacheDependencyDatabase(string name, string connectionStringName, int pollTime) {
            Name = name; 
            ConnectionStringName = connectionStringName;
            PollTime = pollTime;
        }
 
        public SqlCacheDependencyDatabase(string name, string connectionStringName) {
            Name = name; 
            ConnectionStringName = connectionStringName; 
        }
 
        internal SqlCacheDependencyDatabase() {
        }

        protected override ConfigurationPropertyCollection Properties { 
            get {
                return _properties; 
            } 
        }
        protected override ConfigurationElementProperty ElementProperty { 
            get {
                return s_elemProperty;
            }
        } 
        private static void Validate(object value) {
            if (value == null) { 
                throw new ArgumentNullException("sqlCacheDependencyDatabase"); 
            }
            Debug.Assert(value is SqlCacheDependencyDatabase); 

            SqlCacheDependencyDatabase elem = (SqlCacheDependencyDatabase)value;

            if (elem.PollTime != 0 && elem.PollTime < 500) { 
                throw new ConfigurationErrorsException(
                    SR.GetString(SR.Invalid_sql_cache_dep_polltime), 
                    elem.ElementInformation.Properties["pollTime"].Source, 
                    elem.ElementInformation.Properties["pollTime"].LineNumber);
            } 
        }


        internal void CheckDefaultPollTime(int value) { 
            // This method will be called by the outer node.
            // If the poolTime property is not specified in the node, then grab the one 
            // from above. 
            if (ElementInformation.Properties["pollTime"].ValueOrigin == PropertyValueOrigin.Default) {
                defaultPollTime = value; 
            }
        }

        [ConfigurationProperty("name", IsRequired = true, IsKey = true)] 
        [StringValidator(MinLength = 1)]
        public string Name { 
            get { 
                return (string)base[_propName];
            } 
            set {
                base[_propName] = value;
            }
        } 

        [ConfigurationProperty("connectionStringName", IsRequired = true)] 
        [StringValidator(MinLength = 1)] 
        public string ConnectionStringName {
            get { 
                return (string)base[_propConnectionStringName];
            }
            set {
                base[_propConnectionStringName] = value; 
            }
        } 
 
        [ConfigurationProperty("pollTime", DefaultValue = 60000)]
        public int PollTime { 
            get {
                if (ElementInformation.Properties["pollTime"].ValueOrigin == PropertyValueOrigin.Default) {
                    return defaultPollTime;   // Return the default value from outer node
                } 
                else {
                    return (int)base[_propPollTime]; 
                } 
            }
            set { 
                base[_propPollTime] = value;
            }
        }
    } 
}
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK