Пример #1
0
 /// <summary>
 /// Deserializes a ControlMessage from a NGRIDControllerMessage.
 /// </summary>
 /// <param name="controllerMessage">NGRIDControllerMessage that includes ControlMessage</param>
 /// <returns>Deserialized ControlMessage object.</returns>
 private static ControlMessage DeserializeControlMessage(NGRIDControllerMessage controllerMessage)
 {
     return(NGRIDSerializationHelper.DeserializeFromByteArray(
                () =>
                ControlMessageFactory.CreateMessageByTypeId(controllerMessage.ControllerMessageTypeId),
                controllerMessage.MessageData));
 }
Пример #2
0
        /// <summary>
        /// Handles MessageReceived event.
        /// All messages received from all controllers comes to this method.
        /// </summary>
        /// <param name="sender">Sender object</param>
        /// <param name="e">Event arguments</param>
        private void MDSController_MessageReceived(object sender, MessageReceivedFromRemoteApplicationEventArgs e)
        {
            try
            {
                //Response to Ping messages
                if ((e.Message.MessageTypeId == MDSMessageFactory.MessageTypeIdMDSPingMessage) && string.IsNullOrEmpty(e.Message.RepliedMessageId))
                {
                    //Reply ping message
                    SendMessage(new MDSPingMessage {
                        RepliedMessageId = e.Message.MessageId
                    }, e.Communicator);
                    return;
                }

                //Do not process messages other than MDSControllerMessage
                if (e.Message.MessageTypeId != MDSMessageFactory.MessageTypeIdMDSControllerMessage)
                {
                    return;
                }

                //Cast message to MDSControllerMessage
                var controllerMessage = e.Message as MDSControllerMessage;
                if (controllerMessage == null)
                {
                    return;
                }

                //Create (deserialize) ControlMessage from MessageData of controllerMessage object
                var controlMessage = MDSSerializationHelper.DeserializeFromByteArray(
                    () =>
                    ControlMessageFactory.CreateMessageByTypeId(controllerMessage.ControllerMessageTypeId),
                    controllerMessage.MessageData);

                //Process message
                ProcessControllerMessage(e.Communicator, controllerMessage, controlMessage);
            }
            catch (Exception ex)
            {
                Logger.Warn(ex.Message, ex);
            }
        }