Esempio n. 1
0
        /// <summary>
        /// Deserializes the specified model.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="serializationContext">The serialization context.</param>
        public virtual void Deserialize(ModelBase model, TSerializationContext serializationContext)
        {
            Argument.IsNotNull("model", model);
            Argument.IsNotNull("context", serializationContext);

            using (var finalContext = GetContext(model, serializationContext, SerializationContextMode.Deserialization))
            {
                bool?previousLeanAndMeanValue = null;
                if (!ModelBase.GlobalLeanAndMeanModel)
                {
                    previousLeanAndMeanValue = model.LeanAndMeanModel;
                    model.LeanAndMeanModel   = true;
                }

                var serializerModifiers = SerializationManager.GetSerializerModifiers(finalContext.ModelType);

                Log.Debug("Using '{0}' serializer modifiers to deserialize type '{1}'", serializerModifiers.Length, finalContext.ModelType.GetSafeFullName());

                var serializingEventArgs = new SerializationEventArgs(finalContext);

                Deserializing.SafeInvoke(this, serializingEventArgs);

                foreach (var serializerModifier in serializerModifiers)
                {
                    serializerModifier.OnDeserializing(finalContext, model);
                }

                BeforeDeserialization(finalContext);

                DeserializeMembers(finalContext);

                AfterDeserialization(finalContext);

                foreach (var serializerModifier in serializerModifiers)
                {
                    serializerModifier.OnDeserialized(finalContext, model);
                }

                Deserialized.SafeInvoke(this, serializingEventArgs);

                model.FinishDeserialization();

                if (previousLeanAndMeanValue.HasValue)
                {
                    model.LeanAndMeanModel = previousLeanAndMeanValue.Value;
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Deserializes the specified model.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="context">The serialization context.</param>
        protected virtual object Deserialize(object model, ISerializationContext <TSerializationContextInfo> context)
        {
            Argument.IsNotNull("model", model);
            Argument.IsNotNull("context", context);

            var serializerModifiers = SerializationManager.GetSerializerModifiers(context.ModelType);

            Log.Debug("Using '{0}' serializer modifiers to deserialize type '{1}'", serializerModifiers.Length, context.ModelTypeName);

            var serializingEventArgs = new SerializationEventArgs(context);

            Deserializing?.Invoke(this, serializingEventArgs);

            foreach (var serializerModifier in serializerModifiers)
            {
                serializerModifier.OnDeserializing(context, model);
            }

            BeforeDeserialization(context);

            var deserializedMemberValues = DeserializeMembers(context);

            PopulateModel(context, deserializedMemberValues);

            // Always use the deserialized model (might be a value type)
            model = context.Model;

            AfterDeserialization(context);

            foreach (var serializerModifier in serializerModifiers)
            {
                serializerModifier.OnDeserialized(context, model);
            }

            Deserialized?.Invoke(this, serializingEventArgs);

            return(model);
        }
Esempio n. 3
0
 private void OnDeserializing(SerializeEventArgs e)
 {
     Deserializing?.Invoke(this, e);
 }
Esempio n. 4
0
 protected virtual void OnDeserializing(SerializeEventArgs e)
 {
     Deserializing?.Invoke(this, e);
     OnModified(EventArgs.Empty);
 }
        public void EventDataHandler(object sender, EventDataArg <string> e)
        {
            Logger.Info($"Invoked EventDataHandler for {e.HostInfo.Host} via {e.HostInfo.Protocol}, message {e.Data}");
            IMessage message = Deserializing.GetMessage(e.Data, out MessageType type);

            Logger.Debug($"File {message} deserialized to {type} for {e.HostInfo.Host} via {e.HostInfo.Protocol}, message {e.Data}");
            if (message == default(IMessage))
            {
                Logger.Error("Desirializing error");
                return;
            }
            switch (type)
            {
            case MessageType.Command:
            {
                CommandMessageReceived?.Invoke(e.HostInfo, new EventCommandMessageArgs(message as CommandMessage));
                break;
            }

            case MessageType.Connect:
            {
                ConnectMessageReceived?.Invoke(e.HostInfo, new EventMessageConnectArgs(message as ConnectMessage));
                break;
            }

            case MessageType.Request:
            {
                RequestReceived?.Invoke(e.HostInfo, new EventRequestArgs(message as Request));
                break;
            }

            case MessageType.Telemetry:
            {
                TelemetryReceived?.Invoke(e.HostInfo, new EventTelemetryArgs(message as Telemetry));
                break;
            }

            case MessageType.Call:
            {
                CallReceived?.Invoke(e.HostInfo, new EventCallArgs(message as Call));
                break;
            }

            case MessageType.Order:
            {
                OrderReceived?.Invoke(e.HostInfo, new EventOrderArgs(message as Order));
                break;
            }

            //TODO ВСЕХ НЕВЕРНЫХ СЖЕЧЬ!.. Всмысле, в error
            case MessageType.Err:
            {
                ErrorMessageReceived?.Invoke(e.HostInfo, new EventErrArgs(message as ErrorMessage));
                break;
            }

            default:
                Logger.Error("Desirializing error unknow MessageType");
                return;
            }
        }
Esempio n. 6
0
 /// <summary>
 /// Triggers the Deserializing event.
 /// </summary>
 /// <param name="ea">The event arguments.</param>
 public virtual void OnDeserializing(SerializingEventArgs ea)
 {
     Deserializing?.Invoke(this, ea);
 }