2003-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / System.Web / System.Web / HttpCacheVaryByParams.cs
1 // \r
2 // System.Web.HttpCacheVaryByParams\r
3 //\r
4 // Author:\r
5 //   Patrik Torstensson (Patrik.Torstensson@labs2.com)\r
6 //\r
7 using System;\r
8 using System.Collections;\r
9 \r
10 namespace System.Web {\r
11    public sealed class HttpCacheVaryByParams {\r
12       private Hashtable _Items;\r
13       private bool _IgnoreParams;\r
14       private bool _Wildcard;\r
15       private bool _Dirty;\r
16 \r
17       // TODO: We need internal methods here to communicate with CachePolicy\r
18 \r
19       internal HttpCacheVaryByParams() {\r
20       }\r
21 \r
22       public bool IgnoreParams {\r
23          get {\r
24             return _IgnoreParams;\r
25          }\r
26 \r
27          set {\r
28             if (_Wildcard || null != _Items) {\r
29                return;\r
30             }\r
31 \r
32             _Dirty = true;\r
33             _IgnoreParams = value;\r
34          }\r
35       }\r
36       \r
37       public bool this[string header] {\r
38          get {\r
39             if (null == header) {\r
40                throw new ArgumentNullException("header");\r
41             }\r
42 \r
43             if (header == "*") {\r
44                return _Wildcard;\r
45             }\r
46 \r
47             if (null != _Items) {\r
48                return _Items.ContainsKey(header);\r
49             }\r
50 \r
51             return false;\r
52          }\r
53 \r
54          set {\r
55             if (null == header) {\r
56                throw new ArgumentNullException("header");\r
57             }\r
58 \r
59             if (!(value)) {\r
60                return;\r
61             }\r
62 \r
63             _Dirty = true;\r
64 \r
65             if (header == "*") {\r
66                _Wildcard = true;\r
67                _Items = null;\r
68                return;\r
69             }\r
70 \r
71             if (!_Wildcard) {\r
72                if (null == _Items) {\r
73                   _Items = new Hashtable();\r
74                }\r
75 \r
76                _Items[header] = true;\r
77             }\r
78          }\r
79       }\r
80    }\r
81 }\r