Beispiel #1
0
        internal MessagePackBinary(int length, MessagePackDeserializer deserializer)
        {
            Length = length;

            ReadBasic(ref length, ref Basic1, deserializer);
            ReadBasic(ref length, ref Basic2, deserializer);
            ReadBasic(ref length, ref Basic3, deserializer);
            ReadBasic(ref length, ref Basic4, deserializer);

            if (length >= 1)
            {
                Extended = new byte[length];

                var index = 0;

                for (; length >= 8; length -= 8, index += 8)
                {
                    Unsafe.As <byte, ulong>(ref Extended[index]) = deserializer.Read8();
                }

                for (; length > 0; --length, ++index)
                {
                    Extended[index] = deserializer.Read();
                }
            }
        }
Beispiel #2
0
        private static void ReadBasic(ref int length, ref Basic basic, MessagePackDeserializer deserializer)
        {
            if (length >= 8)
            {
                length -= 8;

                basic.UInt64_0 = deserializer.Read8();

                return;
            }

            if (length >= 4)
            {
                length -= 4;

                basic.UInt32_0 = deserializer.Read4();

                if (length >= 2)
                {
                    length -= 2;

                    basic.UInt16_2 = deserializer.Read2();

                    if (length >= 1)
                    {
                        length -= 1;

                        basic.Byte_6 = deserializer.Read();
                    }
                }

                return;
            }

            if (length >= 2)
            {
                length -= 2;

                basic.UInt16_0 = deserializer.Read2();

                if (length >= 1)
                {
                    length -= 1;

                    basic.Byte_2 = deserializer.Read();
                }

                return;
            }

            if (length >= 1)
            {
                length -= 1;

                basic.Byte_0 = deserializer.Read();
            }
        }