private static String ReadFast(ref MessagePackReader reader, byte position)
        {
            var length    = position & 0x1F;
            var valueSpan = reader.PeekFast(1, length);

            reader.AdvanceWithinSpan(length + 1);
            return(EncodingUtils.ToString(valueSpan));
        }
Beispiel #2
0
        private static ExtensionResult ReadFast(ref MessagePackReader reader, ref byte position)
        {
            var typeCode  = unchecked ((sbyte)Unsafe.AddByteOffset(ref position, (IntPtr)1));
            var valueSpan = reader.PeekFast(2, 1);

            reader.AdvanceWithinSpan(3);
            return(new ExtensionResult(typeCode, valueSpan));
        }
        private static String ReadFast(ref MessagePackReader reader, ref byte position)
        {
            var length    = (int)Unsafe.AddByteOffset(ref position, (IntPtr)1);
            var valueSpan = reader.PeekFast(2, length);

            reader.AdvanceWithinSpan(length + 2);
            return(EncodingUtils.ToString(valueSpan));
        }
        private static String ReadFast(ref MessagePackReader reader, ref byte position)
        {
            IntPtr offset    = (IntPtr)1;
            var    length    = unchecked ((Unsafe.AddByteOffset(ref position, offset) << 8) + Unsafe.AddByteOffset(ref position, offset + 1));
            var    valueSpan = reader.PeekFast(3, length);

            reader.AdvanceWithinSpan(length + 3);
            return(EncodingUtils.ToString(valueSpan));
        }
Beispiel #5
0
        private static ExtensionResult ReadFast(ref MessagePackReader reader, ref byte position)
        {
            IntPtr offset   = (IntPtr)1;
            var    length   = Unsafe.AddByteOffset(ref position, offset);                        // pos 1
            var    typeCode = unchecked ((sbyte)Unsafe.AddByteOffset(ref position, offset + 1)); // pos 2

            if (0u >= length)
            {
                reader.AdvanceWithinSpan(3);
                return(new ExtensionResult(typeCode, ReadOnlySpan <byte> .Empty));
            }

            var valueSpan = reader.PeekFast(3, length);

            reader.AdvanceWithinSpan(length + 3);
            return(new ExtensionResult(typeCode, valueSpan));
        }