NextTwoPow() 공개 정적인 메소드

public static NextTwoPow ( int i ) : int
i int
리턴 int
예제 #1
0
        /// <summary>Add some data to our buffer.</summary>
        /// <param name="data">A byte-array to read data from.</param>
        /// <param name="offset">How many bytes to skip at the beginning of the array.</param>
        /// <param name="len">How many bytes to read from the array.</param>
        public void AddData(
            byte[] data,
            int offset,
            int len)
        {
            if (readOnlyBuf)
            {
                throw new InvalidOperationException("Cannot add data to read-only buffer");
            }

            if ((skipped + available + len) > databuf.Length)
            {
                int desiredSize = ByteQueue.NextTwoPow(available + len);
                if (desiredSize > databuf.Length)
                {
                    byte[] tmp = new byte[desiredSize];
                    Array.Copy(databuf, skipped, tmp, 0, available);
                    databuf = tmp;
                }
                else
                {
                    Array.Copy(databuf, skipped, databuf, 0, available);
                }
                skipped = 0;
            }

            Array.Copy(data, offset, databuf, skipped + available, len);
            available += len;
        }
예제 #2
0
 /// <summary>Add some data to our buffer.</summary>
 /// <param name="data">A byte-array to read data from.</param>
 /// <param name="offset">How many bytes to skip at the beginning of the array.</param>
 /// <param name="len">How many bytes to read from the array.</param>
 public void AddData(
     byte[]  data,
     int offset,
     int len)
 {
     if ((skipped + available + len) > databuf.Length)
     {
         byte[] tmp = new byte[ByteQueue.NextTwoPow(data.Length)];
         Array.Copy(databuf, skipped, tmp, 0, available);
         skipped = 0;
         databuf = tmp;
     }
     Array.Copy(data, offset, databuf, skipped + available, len);
     available += len;
 }
예제 #3
0
 public void Shrink()
 {
     if (available == 0)
     {
         databuf = TlsUtilities.EmptyBytes;
         skipped = 0;
     }
     else
     {
         int desiredSize = ByteQueue.NextTwoPow(available);
         if (desiredSize < databuf.Length)
         {
             byte[] tmp = new byte[desiredSize];
             Array.Copy(databuf, skipped, tmp, 0, available);
             databuf = tmp;
             skipped = 0;
         }
     }
 }
예제 #4
0
 public void AddData(byte[] data, int offset, int len)
 {
     if (this.skipped + this.available + len > this.databuf.Length)
     {
         int num = ByteQueue.NextTwoPow(this.available + len);
         if (num > this.databuf.Length)
         {
             byte[] destinationArray = new byte[num];
             Array.Copy(this.databuf, this.skipped, destinationArray, 0, this.available);
             this.databuf = destinationArray;
         }
         else
         {
             Array.Copy(this.databuf, this.skipped, this.databuf, 0, this.available);
         }
         this.skipped = 0;
     }
     Array.Copy(data, offset, this.databuf, this.skipped + this.available, len);
     this.available += len;
 }
예제 #5
0
        /// <summary>Add some data to our buffer.</summary>
        /// <param name="data">A byte-array to read data from.</param>
        /// <param name="offset">How many bytes to skip at the beginning of the array.</param>
        /// <param name="len">How many bytes to read from the array.</param>
        public void AddData(
            byte[]      data,
            int offset,
            int len)
        {
            if ((skipped + available + len) > databuf.Length)
            {
                int desiredSize = ByteQueue.NextTwoPow(available + len);
                if (desiredSize > databuf.Length)
                {
                    byte[] tmp = new byte[desiredSize];
                    Array.Copy(databuf, skipped, tmp, 0, available);
                    databuf = tmp;
                }
                else
                {
                    Array.Copy(databuf, skipped, databuf, 0, available);
                }
                skipped = 0;
            }

            Array.Copy(data, offset, databuf, skipped + available, len);
            available += len;
        }