Exemple #1
0
        public static Type GetTypeFromManifestFull(Stream stream, DeserializerSession session)
        {
            var type = GetTypeFromManifestName(stream, session);

            session.TrackDeserializedType(type);
            return(type);
        }
Exemple #2
0
        private static Type GetTypeFromManifestName(Stream stream, DeserializerSession session)
        {
            var typeName = stream.ReadLengthEncodedByteArray(session);
            var hashcode = stream.ReadInt32(session);

            return(AntTypeSerializer.GetTypeFromTypeKey(new TypeKey(hashcode, typeName)));
        }
Exemple #3
0
 public static int ReadInt32(this Stream self, DeserializerSession session)
 {
     var buffer = session.GetBuffer(4);
     self.Read(buffer, 0, 4);
     var res = BitConverter.ToInt32(buffer, 0);
     return res;
 }
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var id  = stream.ReadInt32(session);
            var obj = session.GetDeserializedObject(id);

            return(obj);
        }
Exemple #5
0
 public static uint ReadUInt16(this Stream self, DeserializerSession session)
 {
     var buffer = session.GetBuffer(2);
     self.Read(buffer, 0, 2);
     var res = BitConverter.ToUInt16(buffer, 0);
     return res;
 }
Exemple #6
0
        public static object ReadObject(this Stream stream, DeserializerSession session)
        {
            var s     = session.Serializer.GetDeserializerByManifest(stream, session);
            var value = s.ReadValue(stream, session); //read the element value

            return(value);
        }
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var elementSerializer = session.Serializer.GetDeserializerByManifest(stream, session);
            //read the element type
            var elementType = elementSerializer.GetElementType();
            //get the element type serializer
            var length = stream.ReadInt32(session);
            var array  = Array.CreateInstance(elementType, length); //create the array

            if (session.Serializer.Options.PreserveObjectReferences)
            {
                session.TrackDeserializedObject(array);
            }

            if (elementType.IsFixedSizeType())
            {
                var size      = elementType.GetTypeSize();
                var totalSize = size * length;
                var buffer    = session.GetBuffer(totalSize);
                stream.Read(buffer, 0, totalSize);
                Buffer.BlockCopy(buffer, 0, array, 0, totalSize);
            }
            else
            {
                for (var i = 0; i < length; i++)
                {
                    var value = elementSerializer.ReadValue(stream, session); //read the element value
                    array.SetValue(value, i);                                 //set the element value
                }
            }

            return(array);
        }
Exemple #8
0
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var surrogateValue = _surrogateSerializer.ReadValue(stream, session);
            var value          = _translator(surrogateValue);

            return(value);
        }
Exemple #9
0
        public static Type GetTypeFromManifestIndex(Stream stream, DeserializerSession session)
        {
            var typeId = stream.ReadUInt16(session);
            var type   = session.GetTypeFromTypeId(typeId);

            return(type);
        }
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     var size = sizeof (long);
     var buffer = session.GetBuffer(size);
     stream.Read(buffer, 0, size);
     return BitConverter.ToInt64(buffer, 0);
 }
Exemple #11
0
        private static Type GetTypeFromManifestName(Stream stream, DeserializerSession session)
        {
            var bytes   = stream.ReadLengthEncodedByteArray(session);
            var byteArr = ByteArrayKey.Create(bytes);

            return(TypeNameLookup.GetOrAdd(byteArr, b =>
            {
                var shortName = StringEx.FromUtf8Bytes(b.Bytes, 0, b.Bytes.Length);
#if NET45
                if (shortName.Contains("System.Private.CoreLib,%core%"))
                {
                    shortName = shortName.Replace("System.Private.CoreLib,%core%", "mscorlib,%core%");
                }
#endif
#if NETSTANDARD
                if (shortName.Contains("mscorlib,%core%"))
                {
                    shortName = shortName.Replace("mscorlib,%core%", "System.Private.CoreLib,%core%");
                }
#endif

                var typename = ToQualifiedAssemblyName(shortName);
                return Type.GetType(typename, true);
            }));
        }
Exemple #12
0
        public static string ReadString(this Stream stream, DeserializerSession session)
        {
            var length = stream.ReadByte();

            switch (length)
            {
            case 0:
                return(null);

            case 255:
                length = stream.ReadInt32(session);
                break;

            default:
                length--;
                break;
            }

            var buffer = session.GetBuffer(length);

            stream.Read(buffer, 0, length);
            var res = StringEx.FromUtf8Bytes(buffer, 0, length);

            return(res);
        }
Exemple #13
0
 public static byte[] ReadLengthEncodedByteArray(this Stream self, DeserializerSession session)
 {
     var length = self.ReadInt32(session);
     var buffer = new byte[length];
     self.Read(buffer, 0, length);
     return buffer;
 }
Exemple #14
0
        public void ReadSimulation()
        {
            var serializer = new Serializer(new SerializerOptions(knownTypes: new List <Type>()
            {
                typeof(Poco)
            }));
            var session = new DeserializerSession(serializer);
            var stream  = new MemoryStream();
            var poco    = new Poco()
            {
                StringProp = "hello",
                GuidProp   = Guid.NewGuid(),
                IntProp    = 123,
                DateProp   = DateTime.Now,
            };

            serializer.Serialize(poco, stream);
            stream.Position = 3; //skip forward to payload

            var type   = typeof(Poco);
            var fields = type.GetFieldInfosForType();

            var readAllFields = GetDelegate(type, fields, serializer);

            var x = (Poco)readAllFields(stream, session);

            Assert.Equal(poco.DateProp, x.DateProp);
            Assert.Equal(poco.GuidProp, x.GuidProp);
            Assert.Equal(poco.IntProp, x.IntProp);
            Assert.Equal(poco.StringProp, x.StringProp);
        }
Exemple #15
0
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var buffer = session.GetBuffer(16);

            stream.Read(buffer, 0, 16);
            return(new Guid(buffer)); //TODO: cap array?
        }
Exemple #16
0
 private static void ReadValues <T>(int length, Stream stream, DeserializerSession session, LinkedList <T> list)
 {
     for (var i = 0; i < length; i++)
     {
         var value = (T)stream.ReadObject(session);
         list.AddLast(value);
     }
 }
Exemple #17
0
        public static byte[] ReadLengthEncodedByteArray(this Stream self, DeserializerSession session)
        {
            var length = self.ReadInt32(session);
            var buffer = new byte[length];

            self.Read(buffer, 0, length);
            return(buffer);
        }
Exemple #18
0
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var size   = sizeof(ushort);
            var buffer = session.GetBuffer(size);

            stream.Read(buffer, 0, size);
            return(BitConverter.ToUInt16(buffer, 0));
        }
Exemple #19
0
 private static void ReadValues <T>(int length, Stream stream, DeserializerSession session, T[] array)
 {
     for (var i = 0; i < length; i++)
     {
         var value = (T)stream.ReadObject(session);
         array[i] = value;
     }
 }
 private static void ReadValues(int length, Stream stream, DeserializerSession session, Array array)
 {
     for (var i = 0; i < length; i++)
     {
         var value = stream.ReadObject(session);
         array.SetValue(value, i);
     }
 }
Exemple #21
0
        public static uint ReadUInt16(this Stream self, DeserializerSession session)
        {
            var buffer = session.GetBuffer(2);

            self.Read(buffer, 0, 2);
            var res = BitConverter.ToUInt16(buffer, 0);

            return(res);
        }
Exemple #22
0
        public static int ReadInt32(this Stream self, DeserializerSession session)
        {
            var buffer = session.GetBuffer(4);

            self.Read(buffer, 0, 4);
            var res = BitConverter.ToInt32(buffer, 0);

            return(res);
        }
Exemple #23
0
            static object Reader(Stream stream, DeserializerSession session)
            {
                var owner     = stream.ReadObject(session) as Type;
                var arguments = stream.ReadObject(session) as Type[];

                var ctor = owner.GetConstructor(arguments);

                return(ctor);
            }
Exemple #24
0
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var size   = sizeof(long);
            var buffer = session.GetBuffer(size);

            stream.Read(buffer, 0, size);
            var ticks = BitConverter.ToInt64(buffer, 0);

            return(new DateTime(ticks));
        }
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var res = stream.ReadLengthEncodedByteArray(session);

            if (session.Serializer.Options.PreserveObjectReferences)
            {
                session.TrackDeserializedObject(res);
            }
            return(res);
        }
            static object Reader(Stream stream, DeserializerSession session)
            {
                var address = StringSerializer.ReadValueImpl(stream, session);
                var id      = StringSerializer.ReadValueImpl(stream, session);
                var pid     = new PID(address, id);

                session.TrackDeserializedObject(pid);

                return(pid);
            }
Exemple #27
0
            static object Reader(Stream stream, DeserializerSession session)
            {
                var name  = stream.ReadString(session);
                var owner = stream.ReadObject(session) as Type;

                var property = owner
                               .GetProperty(name,
                                            BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

                return(property);
            }
Exemple #28
0
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var surrogateValue = _surrogateSerializer.ReadValue(stream, session);
            var value          = _translator(surrogateValue);

            if (_preserveObjectReferences)
            {
                session.ReplaceOrAddTrackedDeserializedObject(surrogateValue, value);
            }
            return(value);
        }
Exemple #29
0
        private static Type GetTypeFromManifestName(Stream stream, DeserializerSession session)
        {
            var bytes = (byte[])ByteArraySerializer.Instance.ReadValue(stream, session);

            return(TypeNameLookup.GetOrAdd(bytes, b =>
            {
                var shortName = Encoding.UTF8.GetString(b);
                var typename = Utils.ToQualifiedAssemblyName(shortName);
                return Type.GetType(typename, true);
            }));
        }
 private static Array ReadValues2D(Stream stream, DeserializerSession session, Array array)
 {
     for (var i = array.GetLowerBound(0); i <= array.GetUpperBound(0); i++)
     {
         for (var j = array.GetLowerBound(1); j <= array.GetUpperBound(1); j++)
         {
             var value = stream.ReadObject(session);
             array.SetValue(value, i, j);
         }
     }
     return(array);
 }
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     try
     {
         return(_reader(stream, session));
     }
     catch (Exception e)
     {
         throw new SerializationException(
                   $"Failed to deserialize object of type [{Type}] from the stream. Cause: {e.Message}", e);
     }
 }
Exemple #32
0
        private static Type GetTypeFromManifestName(Stream stream, DeserializerSession session)
        {
            var bytes   = stream.ReadLengthEncodedByteArray(session);
            var byteArr = ByteArrayKey.Create(bytes);

            return(TypeNameLookup.GetOrAdd(byteArr, b =>
            {
                var shortName = StringEx.FromUtf8Bytes(b.Bytes, 0, b.Bytes.Length);
                var typename = ToQualifiedAssemblyName(shortName);
                return Type.GetType(typename, true);
            }));
        }
            static object Reader(Stream stream, DeserializerSession session)
            {
                var name      = stream.ReadString(session);
                var owner     = stream.ReadObject(session) as Type;
                var arguments = stream.ReadObject(session) as Type[];


                var method = owner.GetMethod(name,
                                             BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null,
                                             CallingConventions.Any, arguments, null);

                return(method);
            }
Exemple #34
0
        public static Type GetTypeFromManifestVersion(Stream stream, DeserializerSession session)
        {
            var type = GetTypeFromManifestName(stream, session);

            var fieldCount = stream.ReadByte();
            for (var i = 0; i < fieldCount; i++)
            {
                var fieldName = stream.ReadLengthEncodedByteArray(session);

            }

            session.TrackDeserializedTypeWithVersion(type, null);
            return type;
        }
Exemple #35
0
        public static Type GetTypeFromManifestVersion(Stream stream, DeserializerSession session)
        {
            var type = GetTypeFromManifestName(stream, session);

            var fieldCount = stream.ReadByte();

            for (var i = 0; i < fieldCount; i++)
            {
                var fieldName = stream.ReadLengthEncodedByteArray(session);
            }

            session.TrackDeserializedTypeWithVersion(type, null);
            return(type);
        }
Exemple #36
0
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var shortname = stream.ReadString(session);
            if (shortname == null)
                return null;

            var name = TypeEx.ToQualifiedAssemblyName(shortname);
            var type = Type.GetType(name,true);

            //add the deserialized type to lookup
            if (session.Serializer.Options.PreserveObjectReferences)
            {
                session.TrackDeserializedObject(type);
            }
            return type;
        }
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var length = stream.ReadByte();
            if (length == 0)
                return null;
            length --;

            if (length == 254)
                length = stream.ReadInt32(session);

            var buffer = session.GetBuffer(length);

            stream.Read(buffer, 0, length);
            var res = Encoding.UTF8.GetString(buffer, 0, length);
            return res;
        }
Exemple #38
0
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var bytes = session.GetBuffer(Int32Serializer.Size);

            var parts = new[]
            {
                Int32Serializer.ReadValueImpl(stream, bytes),
                Int32Serializer.ReadValueImpl(stream, bytes),
                Int32Serializer.ReadValueImpl(stream, bytes),
                Int32Serializer.ReadValueImpl(stream, bytes)
            };
            var sign = (parts[3] & 0x80000000) != 0;

            var scale = (byte) ((parts[3] >> 16) & 0x7F);
            var newValue = new decimal(parts[0], parts[1], parts[2], sign, scale);
            return newValue;
        }
Exemple #39
0
        public override object ReadValue(Stream stream, DeserializerSession session)
        {
            var length = (int) Int32Serializer.Instance.ReadValue(stream, session);
            if (length == -1)
                return null;

            var buffer = session.GetBuffer(length);
            stream.Read(buffer, 0, length);
            var shortname = Encoding.UTF8.GetString(buffer, 0, length);
            var name = Utils.ToQualifiedAssemblyName(shortname);
            var type = Type.GetType(name);
            //add the deserialized type to lookup
            if (session.Serializer.Options.PreserveObjectReferences)
            {
                session.TrackDeserializedObject(type);
            }
            return type;
        }
Exemple #40
0
        public static string ReadString(this Stream stream, DeserializerSession session)
        {
            var length = stream.ReadByte();
            switch (length)
            {
                case 0:
                    return null;
                case 255:
                    length = stream.ReadInt32(session);
                    break;
                default:
                    length--;
                    break;
            }

            var buffer = session.GetBuffer(length);

            stream.Read(buffer, 0, length);
            var res = StringEx.FromUtf8Bytes(buffer, 0, length);
            return res;
        }
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     var id = stream.ReadInt32(session);
     var obj = session.GetDeserializedObject(id);
     return obj;
 }
        private static Type GetTypeFromManifestName(Stream stream, DeserializerSession session)
        {
            var bytes = (byte[]) ByteArraySerializer.Instance.ReadValue(stream, session);

            return TypeNameLookup.GetOrAdd(bytes, b =>
            {
                var shortName = Encoding.UTF8.GetString(b);
                var typename = Utils.ToQualifiedAssemblyName(shortName);
                return Type.GetType(typename, true);
            });
        }
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     return _reader(stream, session);
 }
Exemple #44
0
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     var buffer = session.GetBuffer(16);
     stream.Read(buffer, 0, 16);
     return new Guid(buffer); //TODO: cap array?
 }
 public static Type GetTypeFromManifestIndex(Stream stream, DeserializerSession session)
 {
     var typeId = stream.ReadUInt16(session);
     var type = session.GetTypeFromTypeId(typeId);
     return type;
 }
Exemple #46
0
 private static Type GetTypeFromManifestName(Stream stream, DeserializerSession session)
 {
     var bytes = stream.ReadLengthEncodedByteArray(session);
     var byteArr = ByteArrayKey.Create(bytes);
     return TypeNameLookup.GetOrAdd(byteArr, b =>
     {
         var shortName = StringEx.FromUtf8Bytes(b.Bytes, 0, b.Bytes.Length);
         var typename = ToQualifiedAssemblyName(shortName);
         return Type.GetType(typename, true);
     });
 }
Exemple #47
0
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     var b = stream.ReadByte();
     return b != 0;
 }
Exemple #48
0
 public static Type GetTypeFromManifestIndex(int typeId, DeserializerSession session)
 {
     var type = session.GetTypeFromTypeId(typeId);
     return type;
 }
Exemple #49
0
 public static Type GetTypeFromManifestFull(Stream stream, DeserializerSession session)
 {
     var type = GetTypeFromManifestName(stream, session);
     session.TrackDeserializedType(type);
     return type;
 }
Exemple #50
0
 public static object ReadObject(this Stream stream, DeserializerSession session)
 {
     var s = session.Serializer.GetDeserializerByManifest(stream, session);
     var value = s.ReadValue(stream, session); //read the element value
     return value;
 }
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     return stream.ReadLengthEncodedByteArray(session);
 }
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     var surrogateValue = _surrogateSerializer.ReadValue(stream, session);
     var value = _translator(surrogateValue);
     return value;
 }
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     throw new NotSupportedException();
 }
Exemple #54
0
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     return null;
 }
 public override object ReadValue(Stream stream, DeserializerSession session)
 {
     return (sbyte) stream.ReadByte();
 }
 public abstract object ReadValue(Stream stream, DeserializerSession session);