Wire.SerializerSession.GetBuffer C# (CSharp) Method

GetBuffer() public method

public GetBuffer ( int length ) : byte[]
length int
return byte[]
        public byte[] GetBuffer(int length)
        {
            if (length <= _buffer.Length)
                return _buffer;

            length = Math.Max(length, _buffer.Length*2);

            _buffer = new byte[length];

            return _buffer;
        }

Usage Example

コード例 #1
0
ファイル: NoAllocBitConverter.cs プロジェクト: vbegin/Wire
        internal static unsafe byte[] GetBytes(string str, SerializerSession session, out int byteCount)
        {
            //if first byte is 0 = null
            //if first byte is 254 or less, then length is value - 1
            //if first byte is 255 then the next 4 bytes are an int32 for length
            if (str == null)
            {
                byteCount = 1;
                return(new[] { (byte)0 });
            }
            byteCount = Utf8.GetByteCount(str);
            if (byteCount < 254) //short string
            {
                var bytes = session.GetBuffer(byteCount + 1);
                Utf8.GetBytes(str, 0, str.Length, bytes, 1);
                bytes[0]   = (byte)(byteCount + 1);
                byteCount += 1;
                return(bytes);
            }
            else //long string
            {
                var bytes = session.GetBuffer(byteCount + 1 + 4);
                Utf8.GetBytes(str, 0, str.Length, bytes, 1 + 4);
                bytes[0] = 255;


                fixed(byte *b = bytes)
                * (int *)(b + 1) = byteCount;

                byteCount += 1 + 4;

                return(bytes);
            }
        }
All Usage Examples Of Wire.SerializerSession::GetBuffer