DataServiceStreamResponse.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / DataServiceStreamResponse.cs / 1305376 / DataServiceStreamResponse.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//  
// This class represents the response as a binary stream of data
// and its metadata. 
//  
//---------------------------------------------------------------------
 
namespace System.Data.Services.Client
{
    using System.Collections.Generic;
    using System.Diagnostics; 
    using System.IO;
#if !ASTORIA_LIGHT // Data.Services http stack 
    using System.Net; 
#else
    using System.Data.Services.Http; 
#endif

    /// 
    /// Class which represents a stream response from the service. 
    /// 
    public sealed class DataServiceStreamResponse : IDisposable 
    { 
        /// The underlying web response
        private HttpWebResponse response; 

        /// Lazy initialized cached response headers.
        private Dictionary headers;
 
        /// 
        /// Constructor for the response. This method is internal since we don't want users to create instances 
        /// of this class. 
        /// 
        /// The web response to wrap. 
        internal DataServiceStreamResponse(HttpWebResponse response)
        {
            Debug.Assert(response != null, "Can't create a stream response object from a null response.");
            this.response = response; 
        }
 
        ///  
        /// Returns the content type of the response stream (ex. image/png).
        /// If the Content-Type header was not present in the response this property 
        /// will return null.
        /// 
        public string ContentType
        { 
            get
            { 
                this.CheckDisposed(); 
                return this.response.Headers[XmlConstants.HttpContentType];
            } 
        }

        /// 
        /// Returns the content disposition of the response stream. 
        /// If the Content-Disposition header was not present in the response this property
        /// will return null. 
        ///  
        public string ContentDisposition
        { 
            get
            {
                this.CheckDisposed();
                return this.response.Headers[XmlConstants.HttpContentDisposition]; 
            }
        } 
 
        /// 
        /// Returns a dictionary containing all the response headers returned from the retrieve request 
        /// to obtain the stream.
        /// 
        public Dictionary Headers
        { 
            get
            { 
                this.CheckDisposed(); 
                if (this.headers == null)
                { 
                    this.headers = WebUtil.WrapResponseHeaders(this.response);
                }

                return this.headers; 
            }
        } 
 
        /// 
        /// Returns the stream obtained from the data service. When reading from this stream 
        /// the operations may throw if a network error occurs. This stream is read-only.
        ///
        /// Caller must call Dispose/Close on either the returned stream or on the response
        /// object itself. Otherwise the network connection will be left open and the caller 
        /// might run out of available connections.
        ///  
        public Stream Stream 
        {
            get 
            {
                this.CheckDisposed();
                return this.response.GetResponseStream();
            } 
        }
 
        #region IDisposable Members 

        ///  
        /// Disposes all resources held by this class. Namely the network stream.
        /// 
        public void Dispose()
        { 
            Util.Dispose(ref this.response);
        } 
 
        #endregion
 
        /// Checks if the object has already been disposed. If so it throws the ObjectDisposedException.
        /// If the object has already been disposed.
        private void CheckDisposed()
        { 
            if (this.response == null)
            { 
                Error.ThrowObjectDisposed(this.GetType()); 
            }
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//  
// This class represents the response as a binary stream of data
// and its metadata. 
//  
//---------------------------------------------------------------------
 
namespace System.Data.Services.Client
{
    using System.Collections.Generic;
    using System.Diagnostics; 
    using System.IO;
#if !ASTORIA_LIGHT // Data.Services http stack 
    using System.Net; 
#else
    using System.Data.Services.Http; 
#endif

    /// 
    /// Class which represents a stream response from the service. 
    /// 
    public sealed class DataServiceStreamResponse : IDisposable 
    { 
        /// The underlying web response
        private HttpWebResponse response; 

        /// Lazy initialized cached response headers.
        private Dictionary headers;
 
        /// 
        /// Constructor for the response. This method is internal since we don't want users to create instances 
        /// of this class. 
        /// 
        /// The web response to wrap. 
        internal DataServiceStreamResponse(HttpWebResponse response)
        {
            Debug.Assert(response != null, "Can't create a stream response object from a null response.");
            this.response = response; 
        }
 
        ///  
        /// Returns the content type of the response stream (ex. image/png).
        /// If the Content-Type header was not present in the response this property 
        /// will return null.
        /// 
        public string ContentType
        { 
            get
            { 
                this.CheckDisposed(); 
                return this.response.Headers[XmlConstants.HttpContentType];
            } 
        }

        /// 
        /// Returns the content disposition of the response stream. 
        /// If the Content-Disposition header was not present in the response this property
        /// will return null. 
        ///  
        public string ContentDisposition
        { 
            get
            {
                this.CheckDisposed();
                return this.response.Headers[XmlConstants.HttpContentDisposition]; 
            }
        } 
 
        /// 
        /// Returns a dictionary containing all the response headers returned from the retrieve request 
        /// to obtain the stream.
        /// 
        public Dictionary Headers
        { 
            get
            { 
                this.CheckDisposed(); 
                if (this.headers == null)
                { 
                    this.headers = WebUtil.WrapResponseHeaders(this.response);
                }

                return this.headers; 
            }
        } 
 
        /// 
        /// Returns the stream obtained from the data service. When reading from this stream 
        /// the operations may throw if a network error occurs. This stream is read-only.
        ///
        /// Caller must call Dispose/Close on either the returned stream or on the response
        /// object itself. Otherwise the network connection will be left open and the caller 
        /// might run out of available connections.
        ///  
        public Stream Stream 
        {
            get 
            {
                this.CheckDisposed();
                return this.response.GetResponseStream();
            } 
        }
 
        #region IDisposable Members 

        ///  
        /// Disposes all resources held by this class. Namely the network stream.
        /// 
        public void Dispose()
        { 
            Util.Dispose(ref this.response);
        } 
 
        #endregion
 
        /// Checks if the object has already been disposed. If so it throws the ObjectDisposedException.
        /// If the object has already been disposed.
        private void CheckDisposed()
        { 
            if (this.response == null)
            { 
                Error.ThrowObjectDisposed(this.GetType()); 
            }
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

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