示例#1
0
        public static ExtensionHeader ReadExtensionHeader(MsgPackStream stream)
        {
            var  code = stream.ReadUInt8();
            uint length;

            switch (code)
            {
            case FormatCode.FixExt1: length = 1u; break;

            case FormatCode.FixExt2: length = 2u; break;

            case FormatCode.FixExt4: length = 4u; break;

            case FormatCode.FixExt8: length = 8u; break;

            case FormatCode.FixExt16: length = 16u; break;

            case FormatCode.Ext8: length = stream.ReadUInt8(); break;

            case FormatCode.Ext16: length = stream.ReadUInt16(); break;

            case FormatCode.Ext32: length = stream.ReadUInt32(); break;

            default: throw new MsgPackCodeException(code);
            }

            return(new ExtensionHeader(stream.ReadInt8(), length));
        }
示例#2
0
        public static float ReadSingle(MsgPackStream stream)
        {
            var code = stream.ReadUInt8();

            switch (FormatMask.Match(code))
            {
            case FormatMask.PositiveFixInt: return(code);

            case FormatMask.NegativeFixInt: return(unchecked ((sbyte)code));
            }

            switch (code)
            {
            case FormatCode.Float32: return(stream.ReadSingle());

            case FormatCode.Int8: return(stream.ReadInt8());

            case FormatCode.UInt8: return(stream.ReadUInt8());

            case FormatCode.Int16: return(stream.ReadInt16());

            case FormatCode.UInt16: return(stream.ReadUInt16());

            case FormatCode.Int32: return(stream.ReadInt32());

            case FormatCode.UInt32: return(stream.ReadUInt32());

            case FormatCode.Int64: return(stream.ReadInt64());

            case FormatCode.UInt64: return(stream.ReadUInt64());

            default: throw new MsgPackCodeException(code);
            }
        }
示例#3
0
        public void TestSignedMinMax()
        {
            var stream = new MsgPackStream();

            stream.WriteInt8(sbyte.MinValue);
            stream.WriteInt8(sbyte.MaxValue);
            stream.WriteInt16(short.MinValue);
            stream.WriteInt16(short.MaxValue);
            stream.WriteInt32(int.MinValue);
            stream.WriteInt32(int.MaxValue);
            stream.WriteInt64(long.MinValue);
            stream.WriteInt64(long.MaxValue);

            stream.Position = 0;
            Assert.AreEqual(sbyte.MinValue, stream.ReadInt8());
            Assert.AreEqual(sbyte.MaxValue, stream.ReadInt8());
            Assert.AreEqual(short.MinValue, stream.ReadInt16());
            Assert.AreEqual(short.MaxValue, stream.ReadInt16());
            Assert.AreEqual(int.MinValue, stream.ReadInt32());
            Assert.AreEqual(int.MaxValue, stream.ReadInt32());
            Assert.AreEqual(long.MinValue, stream.ReadInt64());
            Assert.AreEqual(long.MaxValue, stream.ReadInt64());
        }
示例#4
0
        public static sbyte ReadInt8(MsgPackStream stream)
        {
            var code = stream.ReadUInt8();

            switch (FormatMask.Match(code))
            {
            case FormatMask.PositiveFixInt:
            case FormatMask.NegativeFixInt:
                return(unchecked ((sbyte)code));
            }

            switch (code)
            {
            case FormatCode.Int8: return(stream.ReadInt8());

            case FormatCode.UInt8: return(checked ((sbyte)stream.ReadUInt8()));

            default: throw new MsgPackCodeException(code);
            }
        }
示例#5
0
        public void TestSigned()
        {
            var stream = new MsgPackStream();

            stream.WriteInt8(-11);
            Assert.AreEqual(stream.Position, 1);

            stream.WriteInt16(192);
            Assert.AreEqual(stream.Position, 3);

            stream.WriteInt32(-213);
            Assert.AreEqual(stream.Position, 7);

            stream.WriteInt64(64);
            Assert.AreEqual(stream.Position, 15);

            stream.Position = 0;
            Assert.AreEqual(-11, stream.ReadInt8());
            Assert.AreEqual(192, stream.ReadInt16());
            Assert.AreEqual(-213, stream.ReadInt32());
            Assert.AreEqual(64, stream.ReadInt64());
        }