WriteStateInfoBase.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / Mail / WriteStateInfoBase.cs / 1305376 / WriteStateInfoBase.cs

                            namespace System.Net.Mime 
{
    internal abstract class WriteStateInfoBase
    {
        protected byte[] _header; 
        protected byte[] _footer;
        protected int _maxLineLength; 
        protected byte[] buffer; 
        protected int _mimeHeaderLength;
 
        //1024 was originally set in the encoding streams
        protected const int defaultBufferSize = 1024;

        internal WriteStateInfoBase() 
        {
            this.buffer = new byte[defaultBufferSize]; 
            this._header = new byte[0]; ; 
            this._footer = new byte[0];
            this._maxLineLength = EncodedStreamFactory.DefaultMaxLineLength; 
            this._mimeHeaderLength = 0;
        }

        internal WriteStateInfoBase(int bufferSize, byte[] header, byte[] footer, int maxLineLength) 
        {
            this.buffer = new byte[bufferSize]; 
            this._header = header; 
            this._footer = footer;
            this._maxLineLength = maxLineLength; 
            this._mimeHeaderLength = 0;
        }

        internal int FooterLength 
        {
            get 
            { 
                return _footer.Length;
            } 
        }

        //The actual length of the header that this will be appended to
        //e.g. Subject : 
        //this length is taken into account for folding on the first line
        internal int MimeHeaderLength 
        { 
            get
            { 
                return this._mimeHeaderLength;
            }
            set
            { 
                this._mimeHeaderLength = value;
            } 
        } 

        internal int HeaderLength 
        {
            get
            {
                return _header.Length; 
            }
        } 
 
        internal byte[] Footer
        { 
            get
            {
                return _footer;
            } 
        }
 
        internal byte[] Header 
        {
            get 
            {
                return _header;
            }
        } 

        internal byte[] Buffer 
        { 
            get
            { 
                return this.buffer;
            }
        }
 
        internal int Length { get; set; }
        internal int CurrentLineLength { get; set; } 
 
        //attempt to increase the buffer length.
        //returns false if buffer length is at int(max) 
        internal void ResizeBuffer()
        {
            int newsize = buffer.Length * 2;
 
            //try to resize- if the machine doesn't have the memory to resize just let it throw
            byte[] tempBuffer = new byte[newsize]; 
 
            buffer.CopyTo(tempBuffer, 0);
            this.buffer = tempBuffer; 
        }

        internal void AppendHeader()
        { 
            if (this.Header != null)
            { 
                this.Header.CopyTo(this.buffer, this.Length); 
                this.CurrentLineLength += this.HeaderLength;
                this.Length += this.HeaderLength; 
            }
        }

        internal void AppendFooter() 
        {
            if (this.Footer != null) 
            { 
                this.Footer.CopyTo(this.buffer, this.Length);
                this.CurrentLineLength += this.FooterLength; 
                this.Length += this.FooterLength;
            }
        }
 
        internal int MaxLineLength
        { 
            get 
            {
                return this._maxLineLength; 
            }
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

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