Deserialize() защищенный Метод

The deserialize.
protected Deserialize ( int num, object obj, ProtoBuf.ProtoReader protoReader ) : object
num int /// The num. ///
obj object /// The obj. ///
protoReader ProtoBuf.ProtoReader /// The proto reader. ///
Результат object
Пример #1
0
        /// <summary>
        /// The attempt load of file.
        /// </summary>
        /// <param name="file">
        /// The file.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        /// <exception cref="InvalidDataException">
        /// </exception>
        private IRawAsset AttemptLoadOfFile(FileInfo file, string name)
        {
            if (file.Exists)
            {
                using (var stream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    using (var reader = new BinaryReader(stream))
                    {
                        switch (reader.ReadByte())
                        {
                        case CompiledAsset.FORMAT_LZMA_COMPRESSED:
                            using (var memory = new MemoryStream())
                            {
                                LzmaHelper.Decompress(reader.BaseStream, memory);
                                memory.Seek(0, SeekOrigin.Begin);
                                var serializer = new CompiledAssetSerializer();
                                var result     = (CompiledAsset)serializer.Deserialize(memory, null, typeof(CompiledAsset));
                                return(result);
                            }

                        case CompiledAsset.FORMAT_UNCOMPRESSED:
                            var ucserializer = new CompiledAssetSerializer();
                            var ucresult     = (CompiledAsset)ucserializer.Deserialize(reader.BaseStream, null, typeof(CompiledAsset));
                            return(ucresult);

                        default:
                            throw new InvalidDataException();
                        }
                    }
                }
            }

            return(null);
        }
Пример #2
0
        /// <summary>
        /// The attempt load of stream.
        /// </summary>
        /// <param name="stream">
        /// The stream.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        /// <exception cref="InvalidDataException">
        /// </exception>
        private IRawAsset AttemptLoadOfStream(Stream stream, string name)
        {
            if (stream == null)
            {
                return(null);
            }

            using (var copy = new MemoryStream())
            {
                // The reader.BaseStream won't support the Length property as it
                // is a stream from an Android asset; we have to copy the stream
                // to memory and then decompress it.
                stream.CopyTo(copy);
                copy.Seek(0, SeekOrigin.Begin);

                using (var reader = new BinaryReader(copy))
                {
                    if (reader.ReadByte() != 0)
                    {
                        throw new InvalidDataException();
                    }

                    var start = DateTime.Now;
                    using (var memory = new MemoryStream())
                    {
                        LzmaHelper.Decompress(reader.BaseStream, memory);
                        memory.Seek(0, SeekOrigin.Begin);
                        var serializer = new CompiledAssetSerializer();
                        var result     = (CompiledAsset)serializer.Deserialize(memory, null, typeof(CompiledAsset));
                        return(result);
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        /// The attempt load of file.
        /// </summary>
        /// <param name="file">
        /// The file.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        /// <exception cref="InvalidDataException">
        /// </exception>
        private IRawAsset AttemptLoadOfFile(FileInfo file, string name)
        {
            if (file.Exists)
            {
                using (var stream = new FileStream(file.FullName, FileMode.Open))
                {
                    using (var reader = new BinaryReader(stream))
                    {
                        if (reader.ReadByte() != 0)
                        {
                            throw new InvalidDataException();
                        }

                        var start = DateTime.Now;
                        using (var memory = new MemoryStream())
                        {
                            LzmaHelper.Decompress(reader.BaseStream, memory);
                            memory.Seek(0, SeekOrigin.Begin);
                            var serializer = new CompiledAssetSerializer();
                            var result     = (CompiledAsset)serializer.Deserialize(memory, null, typeof(CompiledAsset));
                            return(result);
                        }
                    }
                }
            }

            return(null);
        }
Пример #4
0
        /// <summary>
        /// The attempt load.
        /// </summary>
        /// <param name="path">
        /// The path.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        /// <exception cref="InvalidDataException">
        /// </exception>
        public IRawAsset AttemptLoad(string path, string name, ref DateTime?lastModified, bool noTranslate = false)
        {
            lastModified = new DateTime(1970, 1, 1, 0, 0, 0);

            var embedded = (from assembly in AppDomain.CurrentDomain.GetAssemblies()
                            where !assembly.IsDynamic
                            from resource in assembly.GetManifestResourceNames()
                            where
                            resource
                            == assembly.GetName().Name + "." + name + "-"
                            + TargetPlatformUtility.GetExecutingPlatform() + ".bin" ||
                            resource
                            == assembly.GetName().Name + ".Resources." + name + "-"
                            + TargetPlatformUtility.GetExecutingPlatform() + ".bin"
                            select assembly.GetManifestResourceStream(resource)).ToList();

            if (embedded.Any())
            {
                using (var reader = new BinaryReader(embedded.First()))
                {
                    switch (reader.ReadByte())
                    {
                    case CompiledAsset.FORMAT_LZMA_COMPRESSED:
                        using (var memory = new MemoryStream())
                        {
                            LzmaHelper.Decompress(reader.BaseStream, memory);
                            memory.Seek(0, SeekOrigin.Begin);
                            var serializer = new CompiledAssetSerializer();
                            var result     = (CompiledAsset)serializer.Deserialize(memory, null, typeof(CompiledAsset));
                            return(result);
                        }

                    case CompiledAsset.FORMAT_UNCOMPRESSED:
                        var ucserializer = new CompiledAssetSerializer();
                        var ucresult     = (CompiledAsset)ucserializer.Deserialize(reader.BaseStream, null, typeof(CompiledAsset));
                        return(ucresult);

                    default:
                        throw new InvalidDataException();
                    }
                }
            }

            return(null);
        }
        /// <summary>
        /// The attempt load.
        /// </summary>
        /// <param name="path">
        /// The path.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        /// <exception cref="InvalidDataException">
        /// </exception>
        public IRawAsset AttemptLoad(string path, string name, ref DateTime? lastModified, bool noTranslate = false)
        {
            lastModified = new DateTime(1970, 1, 1, 0, 0, 0);

            var embedded = (from assembly in AppDomain.CurrentDomain.GetAssemblies()
                            where !assembly.IsDynamic
                            from resource in assembly.GetManifestResourceNames()
                            where
                                resource
                                    == assembly.GetName().Name + "." + name + "-"
                                    + TargetPlatformUtility.GetExecutingPlatform() + ".bin" ||
                                resource
                                    == assembly.GetName().Name + ".Resources." + name + "-"
                                    + TargetPlatformUtility.GetExecutingPlatform() + ".bin"
                            select assembly.GetManifestResourceStream(resource)).ToList();
            if (embedded.Any())
            {
                using (var reader = new BinaryReader(embedded.First()))
                {
                    switch (reader.ReadByte())
                    {
                        case CompiledAsset.FORMAT_LZMA_COMPRESSED:
                            using (var memory = new MemoryStream())
                            {
                                LzmaHelper.Decompress(reader.BaseStream, memory);
                                memory.Seek(0, SeekOrigin.Begin);
                                var serializer = new CompiledAssetSerializer();
                                var result = (CompiledAsset)serializer.Deserialize(memory, null, typeof(CompiledAsset));
                                return result;
                            }
                        case CompiledAsset.FORMAT_UNCOMPRESSED:
                            var ucserializer = new CompiledAssetSerializer();
                            var ucresult = (CompiledAsset)ucserializer.Deserialize(reader.BaseStream, null, typeof(CompiledAsset));
                            return ucresult;
                        default:
                            throw new InvalidDataException();
                    }
                }
            }

            return null;
        }
        /// <summary>
        /// The attempt load of file.
        /// </summary>
        /// <param name="file">
        /// The file.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        /// <exception cref="InvalidDataException">
        /// </exception>
        private IRawAsset AttemptLoadOfFile(FileInfo file, string name)
        {
            if (file.Exists)
            {
                using (var stream = new FileStream(file.FullName, FileMode.Open))
                {
                    using (var reader = new BinaryReader(stream))
                    {
                        if (reader.ReadByte() != 0)
                        {
                            throw new InvalidDataException();
                        }

                        var start = DateTime.Now;
                        using (var memory = new MemoryStream())
                        {
                            LzmaHelper.Decompress(reader.BaseStream, memory);
                            memory.Seek(0, SeekOrigin.Begin);
                            var serializer = new CompiledAssetSerializer();
                            var result = (CompiledAsset)serializer.Deserialize(memory, null, typeof(CompiledAsset));
                            return result;
                        }
                    }
                }
            }

            return null;
        }
        /// <summary>
        /// The attempt load of file.
        /// </summary>
        /// <param name="file">
        /// The file.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        /// <exception cref="InvalidDataException">
        /// </exception>
        private IRawAsset AttemptLoadOfFile(FileInfo file, string name)
        {
            if (file.Exists)
            {
                using (var stream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    using (var reader = new BinaryReader(stream))
                    {
                        switch (reader.ReadByte())
                        {
                            case CompiledAsset.FORMAT_LZMA_COMPRESSED:
                                using (var memory = new MemoryStream())
                                {
                                    LzmaHelper.Decompress(reader.BaseStream, memory);
                                    memory.Seek(0, SeekOrigin.Begin);
                                    var serializer = new CompiledAssetSerializer();
                                    var result = (CompiledAsset)serializer.Deserialize(memory, null, typeof(CompiledAsset));
                                    return result;
                                }
                            case CompiledAsset.FORMAT_UNCOMPRESSED:
                                var ucserializer = new CompiledAssetSerializer();
                                var ucresult = (CompiledAsset)ucserializer.Deserialize(reader.BaseStream, null, typeof(CompiledAsset));
                                return ucresult;
                            default:
                                throw new InvalidDataException();
                        }
                    }
                }
            }

            return null;
        }
        /// <summary>
        /// The attempt load of stream.
        /// </summary>
        /// <param name="stream">
        /// The stream.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        /// <exception cref="InvalidDataException">
        /// </exception>
        private IRawAsset AttemptLoadOfStream(Stream stream, string name)
        {
            if (stream == null)
            {
                return null;
            }

            using (var copy = new MemoryStream())
            {
                // The reader.BaseStream won't support the Length property as it
                // is a stream from an Android asset; we have to copy the stream
                // to memory and then decompress it.
                stream.CopyTo(copy);
                copy.Seek(0, SeekOrigin.Begin);

                using (var reader = new BinaryReader(copy))
                {
                    switch (reader.ReadByte())
                    {
                        case CompiledAsset.FORMAT_LZMA_COMPRESSED:
                            using (var memory = new MemoryStream())
                            {
                                LzmaHelper.Decompress(reader.BaseStream, memory);
                                memory.Seek(0, SeekOrigin.Begin);
                                var serializer = new CompiledAssetSerializer();
                                var result = (CompiledAsset)serializer.Deserialize(memory, null, typeof(CompiledAsset));
                                return result;
                            }
                        case CompiledAsset.FORMAT_UNCOMPRESSED:
                            var ucserializer = new CompiledAssetSerializer();
                            var ucresult = (CompiledAsset)ucserializer.Deserialize(reader.BaseStream, null, typeof(CompiledAsset));
                            return ucresult;
                        default:
                            throw new InvalidDataException();
                    }
                }
            }
        }