Пример #1
0
        public Bgra32Image Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize)
        {
            if (MessagePackBinary.IsNil(bytes, offset))
            {
                readSize = 1;
                return(null);
            }

            var startOffset = offset;

            var arrayCount = MessagePackBinary.ReadArrayHeaderRaw(bytes, offset, out var rs);

            offset += rs;

            if (arrayCount != 3)
            {
                throw new InvalidDataException();
            }

            var width = MessagePackBinary.ReadInt32(bytes, offset, out rs);

            offset += rs;

            var height = MessagePackBinary.ReadInt32(bytes, offset, out rs);

            offset += rs;

            var data = MessagePackBinary.ReadBytesSegment(bytes, offset, out rs);

            offset += rs;

            readSize = offset - startOffset;
            return(new Bgra32ImageFromMessagePack(width, height, data));
        }
Пример #2
0
        public T Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize)
        {
            var segment = MessagePackBinary.ReadBytesSegment(bytes, offset, out readSize);

            ValidateRead(segment.Array, segment.Offset);

            return(Unsafe.ReadUnaligned <T>(ref segment.Array[segment.Offset]));
        }
Пример #3
0
        public ArraySegment <byte> ReadBytesSegment()
        {
            ArraySegment <byte> value = MessagePackBinary.ReadBytesSegment(Buffer, Position, out int readSize);

            Position += readSize;

            return(value);
        }
        public unsafe T Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize)
        {
            var segment = MessagePackBinary.ReadBytesSegment(bytes, offset, out readSize);

            ValidateRead(segment.Array, segment.Offset);

            T value;

            fixed(void *p = &segment.Array[segment.Offset])
            {
                UnsafeUtility.CopyPtrToStructure <T>(p, out value);
            }

            return(value);
        }