2 // System.Web.Caching.CachedRawResponse
5 // Jackson Harper (jackson@ximian.com)
6 // Marek Habersack <mhabersack@novell.com>
8 // (C) 2003-2009 Novell, Inc (http://www.novell.com)
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 using System.Collections;
35 using System.Collections.Specialized;
39 using System.Collections.Generic;
41 namespace System.Web.Caching
43 sealed class CachedRawResponse
45 public sealed class DataItem
47 public readonly byte[] Buffer;
48 public readonly long Length;
49 public readonly HttpResponseSubstitutionCallback Callback;
51 public DataItem (byte[] buffer, long length)
57 public DataItem (HttpResponseSubstitutionCallback callback) : this (null, 0)
63 HttpCachePolicy policy;
67 NameValueCollection headers;
73 data = new List <DataItem> ();
79 public CachedRawResponse (HttpCachePolicy policy)
84 public HttpCachePolicy Policy {
85 get { return policy; }
86 set { policy = value; }
89 public CachedVaryBy VaryBy {
90 get { return varyby; }
91 set { varyby = value; }
94 public int StatusCode {
95 get { return status_code; }
96 set { status_code = value; }
99 public string StatusDescription {
100 get { return status_desc; }
101 set { status_desc = value; }
104 public NameValueCollection Headers {
105 get { return headers; }
108 public void SetHeaders (NameValueCollection headers)
110 this.headers = headers;
113 public void SetData (MemoryStream ms)
118 Data.Add (new DataItem (ms.GetBuffer (), ms.Length));
121 public void SetData (HttpResponseSubstitutionCallback callback)
123 if (callback == null)
126 Data.Add (new DataItem (callback));
129 public IList GetData ()
131 int count = data != null ? data.Count :0;