File: SqlCacheDependencySection.cs

package info (click to toggle)
mono 6.8.0.105%2Bdfsg-3.3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,284,512 kB
  • sloc: cs: 11,172,132; xml: 2,850,069; ansic: 671,653; cpp: 122,091; perl: 59,366; javascript: 30,841; asm: 22,168; makefile: 20,093; sh: 15,020; python: 4,827; pascal: 925; sql: 859; sed: 16; php: 1
file content (146 lines) | stat: -rw-r--r-- 5,801 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//------------------------------------------------------------------------------
// <copyright file="SqlCacheDependencySection.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------

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;

    /*             <!-- sqlCacheDependency Attributes:
                enabled="[true|false]" - Enable or disable SQL cache dependency polling
                pollTime="poll time in milliseconds. Minimum is 500 ms."

              Child nodes:
                <databases>                             Database entries
                    <add                                Add a database entry
                        name="string"                   Name to identify this database entry
                        connectionStringName="string"   Connection string name to the SQL database
                        pollTime="int"                  (optional) Poll time in milliseconds

                    <remove                             Remove a database entry
                        name="string" />                Name of database entry to remove
                    <clear/>                            Remove all database entries
                </databases>

              Example:
                <databases>
                    <add name="Northwind_Local" connectionStringName="LocalNorthwind" />
                    <remove name="Pubs_Local">
                <databases>
            -->
            <sqlCacheDependency enabled="true" pollTime="60000">
                <databases>
                </databases>
            </sqlCacheDependency>
*/
    public sealed class SqlCacheDependencySection : ConfigurationSection {
        private static readonly ConfigurationElementProperty s_elemProperty = 
            new ConfigurationElementProperty(new CallbackValidator(typeof(SqlCacheDependencySection), Validate));

        private static ConfigurationPropertyCollection _properties;
        private static readonly ConfigurationProperty _propEnabled;
        private static readonly ConfigurationProperty _propPollTime;
        private static readonly ConfigurationProperty _propDatabases;

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

            _propEnabled = new ConfigurationProperty("enabled", 
                                            typeof(bool), 
                                            true, 
                                            ConfigurationPropertyOptions.None);
            
            _propPollTime = new ConfigurationProperty("pollTime", 
                                            typeof(int), 
                                            60000, 
                                            ConfigurationPropertyOptions.None);

            _propDatabases = new ConfigurationProperty("databases", 
                                            typeof(SqlCacheDependencyDatabaseCollection), 
                                            null,
                                            ConfigurationPropertyOptions.IsDefaultCollection);

            _properties.Add(_propEnabled);
            _properties.Add(_propPollTime);
            _properties.Add(_propDatabases);
        }

        public SqlCacheDependencySection() {
        }

        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("sqlCacheDependency");
            }
            Debug.Assert(value is SqlCacheDependencySection);

            SqlCacheDependencySection elem = (SqlCacheDependencySection)value;

            int defaultPollTime = elem.PollTime;

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

            foreach (SqlCacheDependencyDatabase dbase in Databases) {
                dbase.CheckDefaultPollTime(defaultPollTime);
            }
        }

        [ConfigurationProperty("enabled", DefaultValue = true)]
        public bool Enabled {
            get {
                return (bool)base[_propEnabled];
            }
            set {
                base[_propEnabled] = value;
            }
        }

        [ConfigurationProperty("pollTime", DefaultValue = 60000)]
        public int PollTime {
            get {
                return (int)base[_propPollTime];
            }
            set {
                base[_propPollTime] = value;
            }
        }

        [ConfigurationProperty("databases")]
        public SqlCacheDependencyDatabaseCollection Databases {
            get {
                return (SqlCacheDependencyDatabaseCollection)base[_propDatabases];
            }
        }
    }
}