private static Int64 ReadMultisegment(ref MessagePackReader reader)
        {
            var value = reader.GetRawByte(1);

            reader.Advance(2);
            return(value);
        }
        public Int64 Read(ref MessagePackReader reader, ref byte position)
        {
            var value = unchecked ((sbyte)position);

            reader.Advance(1);
            return(value);
        }
        public Int64 Read(ref MessagePackReader reader, ref byte position)
        {
            var value = position;

            reader.Advance(1);
            return(value);
        }
示例#4
0
        public sbyte ReadMultisegment(ref MessagePackReader reader)
        {
            var value = unchecked ((sbyte)reader.GetRawByte(1));

            reader.Advance(2);
            return(value);
        }
        private static Int64 ReadMultisegment(ref MessagePackReader reader)
        {
            var valueSpan = reader.Peek(3);

            reader.Advance(3);

            ref byte b      = ref MemoryMarshal.GetReference(valueSpan);
        private static Double ReadMultisegment(ref MessagePackReader reader)
        {
            var valueSpan = reader.Peek(9);

            reader.Advance(9);
            return(new Float64Bits(ref MemoryMarshal.GetReference(valueSpan)).Value);
        }
        public uint Read(ref MessagePackReader reader, ref byte position)
        {
            var value = (uint)(position & 0xF);

            reader.Advance(1);
            return(value);
        }
        private static byte[] ReadMultisegment(ref MessagePackReader reader)
        {
            var length = reader.GetRawByte(1);

            if (0u >= length)
            {
                reader.Advance(2);
                return(MessagePackBinary.Empty);
            }

            var readSize  = length + 2;
            var valueSpan = reader.Peek(readSize);
            var newBytes  = new byte[length];

            valueSpan.Slice(2, length).CopyTo(newBytes);
            reader.Advance(readSize);
            return(newBytes);
        }
        private static String ReadMultisegment(ref MessagePackReader reader)
        {
            var length    = (int)reader.GetRawByte(1);
            var readSize  = length + 2;
            var valueSpan = reader.Peek(readSize);

            reader.Advance(readSize);
            return(EncodingUtils.ToString(valueSpan.Slice(2, length)));
        }
        private static String ReadMultisegment(ref MessagePackReader reader, byte position)
        {
            var length    = position & 0x1F;
            var readSize  = length + 1;
            var valueSpan = reader.Peek(readSize);

            reader.Advance(readSize);
            return(EncodingUtils.ToString(valueSpan.Slice(1, length)));
        }
示例#11
0
        private static ExtensionResult ReadMultisegment(ref MessagePackReader reader)
        {
            var valueSpan = reader.Peek(18);

            reader.Advance(18);
            var typeCode = unchecked ((sbyte)valueSpan[1]);

            return(new ExtensionResult(typeCode, valueSpan.Slice(2, 16)));
        }
示例#12
0
 public void Read(ref MessagePackReader reader, ref byte position)
 {
     reader.Advance(3);
 }
示例#13
0
        private static void ReadMultisegment(ref MessagePackReader reader)
        {
            var length = reader.GetRawByte(1);

            reader.Advance(length + 2);
        }
示例#14
0
        public void Read(ref MessagePackReader reader, ref byte position)
        {
            var length = position & 0x1F;

            reader.Advance(length + 1);
        }
 public byte[] Read(ref MessagePackReader reader, ref byte position)
 {
     reader.Advance(1);
     return(null);
 }
示例#16
0
        public object Deserialize(ref MessagePackReader reader, IFormatterResolver formatterResolver)
        {
            var type = reader.GetMessagePackType();

            switch (type)
            {
            case MessagePackType.Integer:
                var code = reader.Peek();
                if (MessagePackCode.MinNegativeFixInt <= code && code <= MessagePackCode.MaxNegativeFixInt)
                {
                    return(reader.ReadSByte());
                }
                else if (MessagePackCode.MinFixInt <= code && code <= MessagePackCode.MaxFixInt)
                {
                    return(reader.ReadByte());
                }
                else
                {
                    switch (code)
                    {
                    case MessagePackCode.Int8: return(reader.ReadSByte());

                    case MessagePackCode.Int16: return(reader.ReadInt16());

                    case MessagePackCode.Int32: return(reader.ReadInt32());

                    case MessagePackCode.Int64: return(reader.ReadInt64());

                    case MessagePackCode.UInt8: return(reader.ReadByte());

                    case MessagePackCode.UInt16: return(reader.ReadUInt16());

                    case MessagePackCode.UInt32: return(reader.ReadUInt32());

                    case MessagePackCode.UInt64: return(reader.ReadUInt64());

                    default: ThrowHelper.ThrowInvalidOperationException_Primitive_Bytes(); return(null);
                    }
                }

            case MessagePackType.Boolean:
                return(reader.ReadBoolean());

            case MessagePackType.Float:
                if (MessagePackCode.Float32 == reader.Peek())
                {
                    return(reader.ReadSingle());
                }
                else
                {
                    return(reader.ReadDouble());
                }

            case MessagePackType.String:
                return(reader.ReadString());

            case MessagePackType.Binary:
                return(reader.ReadBytes());

            case MessagePackType.Extension:
                var extTypeCode = reader.GetExtensionFormatTypeCode();
                if (extTypeCode != ReservedMessagePackExtensionTypeCode.DateTime)
                {
                    ThrowHelper.ThrowInvalidOperationException_Primitive_Bytes();
                }
                return(reader.ReadDateTime());

            case MessagePackType.Array:
            {
                var length = reader.ReadArrayHeader();

                var objectFormatter = formatterResolver.GetFormatter <object>();
                var array           = new object[length];
                for (int i = 0; i < length; i++)
                {
                    array[i] = objectFormatter.Deserialize(ref reader, formatterResolver);
                }

                return(array);
            }

            case MessagePackType.Map:
            {
                var length = reader.ReadMapHeader();

                var objectFormatter = formatterResolver.GetFormatter <object>();
                var hash            = new Dictionary <object, object>(length);
                for (int i = 0; i < length; i++)
                {
                    var key   = objectFormatter.Deserialize(ref reader, formatterResolver);
                    var value = objectFormatter.Deserialize(ref reader, formatterResolver);

                    hash.Add(key, value);
                }

                return(hash);
            }

            case MessagePackType.Nil:
                reader.Advance(1);
                return(null);

            default:
                ThrowHelper.ThrowInvalidOperationException_Primitive_Bytes(); return(null);
            }
        }