_BufferOffsetSize.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Net / System / Net / _BufferOffsetSize.cs / 1 / _BufferOffsetSize.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Net { 
    // 
    // this class is used by the BeginMultipleSend() API
    // to allow a user to send multiple buffers on a socket 
    //
    internal class BufferOffsetSize {
        //
        // internal members 
        //
        internal byte[] Buffer; 
        internal int Offset; 
        internal int Size;
 
        internal BufferOffsetSize(byte[] buffer, int offset, int size, bool copyBuffer) {
            GlobalLog.Assert(buffer != null && buffer.Length >= size + offset, "BufferOffsetSize::.ctor|Illegal parameters.");
            if (copyBuffer) {
                byte[] newBuffer = new byte[size]; 

                System.Buffer.BlockCopy( 
                    buffer,     // src 
                    offset,     // src index
                    newBuffer,  // dest 
                    0,          // dest index
                    size );     // total size to copy

                offset = 0; 
                buffer = newBuffer;
            } 
            Buffer = buffer; 
            Offset = offset;
            Size = size; 
            GlobalLog.Print("BufferOffsetSize#" + ValidationHelper.HashString(this) + "::.ctor() copyBuffer:" + copyBuffer.ToString() + " this:[" + ToString() + "]");
        }

        /* 
        // Consider removing.
        internal BufferOffsetSize(byte[] buffer, int offset, bool copyBuffer) 
            : this(buffer, offset, buffer.Length - offset, copyBuffer) { 
        }
        */ 

        /*
        // Consider removing.
        internal BufferOffsetSize(int size, byte[] buffer, bool copyBuffer) 
            : this(buffer, 0, size, copyBuffer) {
        } 
        */ 

        internal BufferOffsetSize(byte[] buffer, bool copyBuffer) 
            : this(buffer, 0, buffer.Length, copyBuffer) {
        }

#if TRAVE 
        public override string ToString() {
            return "BufferOffsetSize#" + ValidationHelper.HashString(this) + " Buffer#" + ValidationHelper.HashString(Buffer) + " Offset:" + Offset.ToString() + " Size:" + Size.ToString(); 
        } 
#endif
 
    } // class BufferOffsetSize


 
} // namespace System.Net


                        

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