Пример #1
0
        /// <summary>
        /// Deserialize
        /// </summary>
        /// <param name="deserializer">Deserializer</param>
        /// <param name="br">Stream</param>
        /// <returns>Return object</returns>
        public object Deserialize(IBinaryDeserializer deserializer, BinaryReader br)
        {
            object ret = Activator.CreateInstance(Type);

            Deserialize(deserializer, br, ret);
            return(ret);
        }
Пример #2
0
        public static Command Deserialize(IBinaryDeserializer binaryDeserializer)
        {
            var name   = binaryDeserializer.ReadString();
            var admins = binaryDeserializer.DeserializeCollection(() => new ConcurrentSet <string>(), binaryDeserializer.ReadString);

            return(new Command(name, admins));
        }
Пример #3
0
        protected override void DeserializeExclusiveData(IBinaryDeserializer deserializer, BinaryReader reader, BinarySerializerSettings settings = null)
        {
            if (Version > 1)
            {
                throw new FormatException(nameof(Version));
            }

            Script = reader.ReadVarBytes(65536);

            if (Script.Length == 0)
            {
                throw new FormatException();
            }

            if (Version >= 1)
            {
                Gas = deserializer.Deserialize <Fixed8>(reader, settings);

                if (Gas < Fixed8.Zero)
                {
                    throw new FormatException();
                }
            }
            else
            {
                Gas = Fixed8.Zero;
            }
        }
Пример #4
0
        const int expectedLength = 32;// (curve.Q.GetBitLength() + 7) / 8;

        public object Deserialize(IBinaryDeserializer binaryDeserializer, BinaryReader reader, Type type, BinarySerializerSettings settings = null)
        {
            var prefix = reader.ReadByte();

            switch (prefix)
            {
            case 0x00: return(ECPoint.Infinity);

            case 0x02:
            case 0x03:
            {
                byte[] buffer = new byte[1 + expectedLength];
                buffer[0] = prefix;

                reader.Read(buffer, 1, expectedLength);
                return(new ECPoint(buffer));
            }

            case 0x04:
            case 0x06:
            case 0x07:
            {
                byte[] buffer = new byte[1 + expectedLength * 2];
                buffer[0] = prefix;

                reader.Read(buffer, 1, expectedLength * 2);
                return(new ECPoint(buffer));
            }

            default: throw new FormatException("Invalid point encoding " + prefix);
            }
        }
Пример #5
0
        public static AddCommandOperation Deserialize(IBinaryDeserializer binaryDeserializer)
        {
            var commandName = binaryDeserializer.ReadString();
            var executorId  = binaryDeserializer.ReadString();

            return(new AddCommandOperation(commandName, executorId));
        }
Пример #6
0
        public static AddExecutorOperation Deserialize(IBinaryDeserializer binaryDeserializer)
        {
            var executorId = binaryDeserializer.ReadString();
            var apiKey     = binaryDeserializer.ReadString();

            return(new AddExecutorOperation(executorId, apiKey));
        }
Пример #7
0
        public static Executor Deserialize(IBinaryDeserializer binaryDeserializer)
        {
            var id     = binaryDeserializer.ReadString();
            var apiKey = binaryDeserializer.ReadString();

            return(new Executor(id, apiKey));
        }
        public static AddCommandAdminOperation Deserialize(IBinaryDeserializer binaryDeserializer)
        {
            var commandName = binaryDeserializer.ReadString();
            var apiKey      = binaryDeserializer.ReadString();

            return(new AddCommandAdminOperation(commandName, apiKey));
        }
Пример #9
0
 private static void InitializeBinarySerializer(
     IBinarySerializer binarySerializer,
     IBinaryDeserializer binaryDeserializer)
 {
     BinarySerializer.Initialize(binarySerializer);
     BinaryDeserializer.Initialize(binaryDeserializer);
 }
Пример #10
0
 public StateTransactionProcessor(IRepository repository, IBinaryDeserializer deserializer,
                                  IAccountManager accountManager)
 {
     _repository     = repository;
     _deserializer   = deserializer;
     _accountManager = accountManager;
 }
Пример #11
0
        public object Deserialize(IBinaryDeserializer binaryDeserializer, BinaryReader reader, Type type, BinarySerializerSettings settings = null)
        {
            var val = new byte[FixedLength];

            reader.Read(val, 0, FixedLength);

            return(new UInt160(val));
        }
Пример #12
0
 public static DataMessage Deserialize(IBinaryDeserializer deserializer, IConnectionUtility utility)
 {
     return(new DataMessage(
                (DataAction)deserializer.ReadInt(),
                deserializer.ReadString(),
                deserializer.ReadBytes(),
                utility.DeserializeAddress(deserializer)));
 }
Пример #13
0
 public static DataStorage Deserialize(IBinaryDeserializer deserializer)
 {
     return(new DataStorage(deserializer.ReadList(d => new
     {
         Key = Encoding.UTF8.GetString(deserializer.ReadBytes()),
         Value = deserializer.ReadBytes()
     }).ToDictionary(x => x.Key, x => x.Value)));
 }
Пример #14
0
 protected override void DeserializeExclusiveData(IBinaryDeserializer deserializer, BinaryReader reader, BinarySerializerSettings settings = null)
 {
     AssetType = (AssetType)reader.ReadByte();
     Name      = reader.ReadVarString(1024);
     Amount    = deserializer.Deserialize <Fixed8>(reader, settings);
     Precision = reader.ReadByte();
     Owner     = deserializer.Deserialize <ECPoint>(reader, settings);
     Admin     = deserializer.Deserialize <UInt160>(reader, settings);
 }
Пример #15
0
 public RedisDbBinaryRepository(
     IRedisDbContext redisDbContext,
     IBinarySerializer binarySerializer,
     IBinaryDeserializer binaryDeserializer)
 {
     _redisDbContext     = redisDbContext ?? throw new ArgumentNullException(nameof(redisDbContext));
     _binarySerializer   = binarySerializer ?? throw new ArgumentNullException(nameof(binarySerializer));
     _binaryDeserializer = binaryDeserializer ?? throw new ArgumentNullException(nameof(binaryDeserializer));
 }
Пример #16
0
        public object Deserialize(IBinaryDeserializer deserializer, BinaryReader reader, Type type, BinarySerializerSettings settings = null)
        {
            // Read transaction Type

            var tx = Cache.CreateInstance <Transaction>(reader.ReadByte());

            tx.Deserialize(deserializer, reader, settings);

            return(tx);
        }
        public static List <T> ReadList <T>(this IBinaryDeserializer deserializer, Func <IBinaryDeserializer, T> readFunc)
        {
            var count = deserializer.ReadInt();
            var list  = new List <T>(count);

            for (int i = 0; i < count; i++)
            {
                list.Add(deserializer.Read(readFunc));
            }
            return(list);
        }
Пример #18
0
 public RocksDbRepository
 (
     IRocksDbContext rocksDbContext,
     IBinarySerializer binarySerializer,
     IBinaryDeserializer binaryDeserializer
 )
 {
     _rocksDbContext     = rocksDbContext ?? throw new ArgumentNullException(nameof(rocksDbContext));
     _binarySerializer   = binarySerializer ?? throw new ArgumentNullException(nameof(binarySerializer));
     _binaryDeserializer = binaryDeserializer;
 }
        public static TCollection DeserializeCollection <TValue, TCollection>(
            this IBinaryDeserializer binaryDeserializer, Func <TCollection> collectionInitializer, Func <TValue> selector)
            where TCollection : ICollection <TValue>
        {
            var count = binaryDeserializer.ReadInt32();
            var array = collectionInitializer();

            for (var i = 0; i < count; i++)
            {
                array.Add(selector());
            }
            return(array);
        }
Пример #20
0
        static Transformer()
        {
            _typeCreator     = new TypeCreator();
            _typeAnalyzer    = new TypeAnalyzer();
            _typeMapper      = new EverythingTypeMapper(_typeAnalyzer);
            _mappingRegistry = new MappingRegistry(_typeMapper);

            _jsonSerializer     = new JsonSerializer(_mappingRegistry);
            _jsonDeserializer   = new JsonDeserializer(_mappingRegistry, _typeCreator);
            _binarySerializer   = new BinarySerializer(_mappingRegistry);
            _binaryDeserializer = new BinaryDeserializer(_mappingRegistry, _typeCreator);
            _xmlSerializer      = new XmlSerializer(_mappingRegistry);
            _xmlDeserializer    = new XmlDeserializer(_mappingRegistry, _typeCreator);
        }
Пример #21
0
        /// <summary>
        /// Deserialize without create a new object
        /// </summary>
        /// <param name="deserializer">Deserializer</param>
        /// <param name="br">Stream</param>
        /// <param name="obj">Object</param>
        public void Deserialize(IBinaryDeserializer deserializer, BinaryReader br, object obj)
        {
            foreach (BinarySerializerCacheEntry e in _entries)
            {
                if (e.ReadOnly)
                {
                    // Consume it
                    e.ReadValue(deserializer, br);
                    continue;
                }

                e.SetValue(obj, e.ReadValue(deserializer, br));
            }
        }
Пример #22
0
        /// <summary>
        /// Deserialize logic
        /// </summary>
        /// <param name="deserializer">Deserializer</param>
        /// <param name="reader">Reader</param>
        /// <param name="settings">Settings</param>
        public void Deserialize(IBinaryDeserializer deserializer, BinaryReader reader, BinarySerializerSettings settings = null)
        {
            // Check type

            // Byte already readed

            // if ((byte)Type != reader.ReadByte())
            //    throw new FormatException();

            // Read version

            Version = reader.ReadByte();

            // Deserialize exclusive data

            DeserializeExclusiveData(deserializer, reader, settings);

            // Deserialize shared content

            Attributes = deserializer.Deserialize <TransactionAttribute[]>(reader, settings);
            if (Attributes.Length > ushort.MaxValue)
            {
                throw new FormatException(nameof(Attributes));
            }

            Inputs = deserializer.Deserialize <CoinReference[]>(reader, settings);
            if (Inputs.Length > ushort.MaxValue)
            {
                throw new FormatException(nameof(Inputs));
            }

            Outputs = deserializer.Deserialize <TransactionOutput[]>(reader, settings);
            if (Outputs.Length > ushort.MaxValue)
            {
                throw new FormatException(nameof(Outputs));
            }

            // Deserialize signature

            if (settings?.Filter?.Invoke(nameof(Witness)) != false)
            {
                Witness = deserializer.Deserialize <Witness[]>(reader, settings);
                if (Witness.Length > ushort.MaxValue)
                {
                    throw new FormatException(nameof(Witness));
                }
            }
        }
Пример #23
0
        public void Setup()
        {
            var typeCreator     = new TypeCreator();
            var typeAnalyzer    = new TypeAnalyzer();
            var typeMapper      = new EverythingTypeMapper(typeAnalyzer);
            var mappingRegistry = new MappingRegistry(typeMapper);

            _binarySerializer   = new BinarySerializer(mappingRegistry);
            _binaryDeserializer = new BinaryDeserializer(mappingRegistry, typeCreator);

            _jsonSerializer   = new JsonSerializer(mappingRegistry);
            _jsonDeserializer = new JsonDeserializer(mappingRegistry, typeCreator);

            _xmlSerializer   = new XmlSerializer(mappingRegistry);
            _xmlDeserializer = new XmlDeserializer(mappingRegistry, typeCreator);
        }
Пример #24
0
        public static SerializableIndex <TKey, TValue> Deserialize <TKey, TValue>(IBinaryDeserializer binaryDeserializer,
                                                                                  Func <IBinaryDeserializer, TKey> keySelector,
                                                                                  Func <IBinaryDeserializer, TValue> valueSelector)
        {
            var index = new ConcurrentDictionary <TKey, TValue>();
            var count = binaryDeserializer.ReadInt32();

            for (var i = 0; i < count; i++)
            {
                var key   = keySelector(binaryDeserializer);
                var value = valueSelector(binaryDeserializer);
                index[key] = value;
            }

            return(new SerializableIndex <TKey, TValue>(index));
        }
Пример #25
0
        public object Deserialize(IBinaryDeserializer deserializer, BinaryReader reader, Type type, BinarySerializerSettings settings = null)
        {
            var l = (int)reader.ReadVarInt(ushort.MaxValue);

            if (l > MaxLength)
            {
                throw new FormatException(nameof(MaxLength));
            }

            var a = (IList)Activator.CreateInstance(_type);

            for (var ix = 0; ix < l; ix++)
            {
                a.Add(_serializer.Deserialize(deserializer, reader, _itemType, settings));
            }

            return(a);
        }
            public object GetArrayValue(IBinaryDeserializer deserializer, BinaryReader reader)
            {
                var l = (int)ReadVarInt(reader, ushort.MaxValue);

                if (l > MaxLength)
                {
                    throw new FormatException("MaxLength");
                }

                var a = (Array)Activator.CreateInstance(Type, l);

                for (var ix = 0; ix < l; ix++)
                {
                    a.SetValue(GetValue(deserializer, reader), ix);
                }

                return(a);
            }
Пример #27
0
        public object Deserialize(IBinaryDeserializer binaryDeserializer, BinaryReader reader, Type type, BinarySerializerSettings settings = null)
        {
            var data = reader.ReadBytes(16);

            if (data.Length != 16)
            {
                throw new FormatException();
            }

            var address = new IPAddress(data);

            data = reader.ReadBytes(2);

            if (data.Length != 2)
            {
                throw new FormatException();
            }
            var port = data.Reverse().ToArray().ToUInt16(0);

            return(new IPEndPoint(address, port));
        }
Пример #28
0
        protected override void DeserializeExclusiveData(IBinaryDeserializer deserializer, BinaryReader reader, BinarySerializerSettings settings = null)
        {
            Script        = reader.ReadVarBytes();
            ParameterList = reader.ReadVarBytes().Select(p => (ContractParameterType)p).ToArray();
            ReturnType    = (ContractParameterType)reader.ReadByte();

            if (Version >= 1)
            {
                NeedStorage = reader.ReadBoolean();
            }
            else
            {
                NeedStorage = false;
            }

            Name        = reader.ReadVarString(252);
            CodeVersion = reader.ReadVarString(252);
            Author      = reader.ReadVarString(252);
            Email       = reader.ReadVarString(252);
            Description = reader.ReadVarString(65536);
        }
Пример #29
0
        /// <summary>
        /// Deserialize object
        /// </summary>
        /// <param name="deserializer">Deserializer</param>
        /// <param name="reader">Reader</param>
        /// <param name="type">Type</param>
        /// <param name="settings">Settings</param>
        /// <returns>Deserialized object</returns>
        public object Deserialize(IBinaryDeserializer deserializer, BinaryReader reader, Type type, BinarySerializerSettings settings = null)
        {
            var ret = Activator.CreateInstance(type);

            foreach (var e in _entries)
            {
                if (settings?.Filter?.Invoke(e.Name) == false)
                {
                    continue;
                }

                if (e.ReadOnly)
                {
                    // Consume it

                    var val = e.Serializer.Deserialize(deserializer, reader, e.Type, settings);

                    // Should be equal

                    if (!val.Equals(e.GetValue(ret)))
                    {
                        // If a readonly property or field is not the same, throw and exception !

                        throw new FormatException();
                    }

                    continue;
                }

                e.SetValue(ret, e.Serializer.Deserialize(deserializer, reader, e.Type, settings));
            }

            if (ret is IBinaryVerifiable v && !v.Verify())
            {
                throw new FormatException();
            }

            return(ret);
        }
Пример #30
0
        /// <summary>
        /// Deserialize logic
        /// </summary>
        /// <param name="binaryDeserializer">Deserializer</param>
        /// <param name="reader">Reader</param>
        /// <param name="type">Type</param>
        /// <param name="settings">Settigns</param>
        /// <returns>Return object</returns>
        public object Deserialize(IBinaryDeserializer binaryDeserializer, BinaryReader reader, Type type, BinarySerializerSettings settings = null)
        {
            byte[] data;
            var    usage = (TransactionAttributeUsage)reader.ReadByte();

            if (usage == TransactionAttributeUsage.ContractHash || usage == TransactionAttributeUsage.Vote ||
                (usage >= TransactionAttributeUsage.Hash1 && usage <= TransactionAttributeUsage.Hash15))
            {
                data = reader.ReadBytes(32);
            }
            else if (usage == TransactionAttributeUsage.ECDH02 || usage == TransactionAttributeUsage.ECDH03)
            {
                data = new[] { (byte)usage }.Concat(reader.ReadBytes(32)).ToArray();
            }
            else if (usage == TransactionAttributeUsage.Script)
            {
                data = reader.ReadBytes(20);
            }
            else if (usage == TransactionAttributeUsage.DescriptionUrl)
            {
                data = reader.ReadBytes(reader.ReadByte());
            }
            else if (usage == TransactionAttributeUsage.Description || usage >= TransactionAttributeUsage.Remark)
            {
                data = reader.ReadVarBytes(ushort.MaxValue);
            }
            else
            {
                throw new FormatException();
            }

            return(new TransactionAttribute()
            {
                Usage = usage,
                Data = data
            });
        }