Esempio n. 1
0
        /// <summary>
        /// Process item from raw data queue.
        /// </summary>
        /// <param name="data">Dequeued data.</param>
        private void ProcessData(RawDataQueueItem data)
        {
            var messages         = _marshaller.Unmarshall(data.Data);
            var responseMessages = new List <Message>();

            foreach (var msg in messages)
            {
                Logger.Trace("Processing " + msg.MessageType + " message.");

                try
                {
                    var metadata = data.Metadata as TcpDataProviderMetadata;
                    var response = HandleMessageGeneric(msg, metadata);
                    responseMessages.AddRange(response);
                }
                catch (RuntimeBinderException e)
                {
                    Logger.Debug(e.Message);
                    Logger.Warn("Unsupported message type received (" + msg.MessageType + ").");
                    var errorMsg = new ErrorMessage
                    {
                        ErrorType = ErrorType.InvalidOperation,
                        ErrorText = "Computational Server doesn't handle " + msg.MessageType + " message."
                    };
                    responseMessages = new List <Message> {
                        errorMsg
                    };
                    break;
                }
            }

            foreach (var msgToSend in responseMessages)
            {
                Logger.Trace("Sending " + msgToSend.MessageType + " message.");
            }

            var marshalledResponse = _marshaller.Marshall(responseMessages);

            data.Callback(marshalledResponse);
        }
Esempio n. 2
0
        /// <summary>
        /// Process item from raw data queue.
        /// </summary>
        /// <param name="data">Dequeued data.</param>
        private void ProcessData(RawDataQueueItem data)
        {
            var messages = _marshaller.Unmarshall(data.Data);
            var responseMessages = new List<Message>();

            foreach (var msg in messages)
            {
                Logger.Trace("Processing " + msg.MessageType + " message.");

                try
                {
                    var metadata = data.Metadata as TcpDataProviderMetadata;
                    var response = HandleMessageGeneric(msg, metadata);
                    responseMessages.AddRange(response);
                }
                catch (RuntimeBinderException e)
                {
                    Logger.Debug(e.Message);
                    Logger.Warn("Unsupported message type received (" + msg.MessageType + ").");
                    var errorMsg = new ErrorMessage
                    {
                        ErrorType = ErrorType.InvalidOperation,
                        ErrorText = "Computational Server doesn't handle " + msg.MessageType + " message."
                    };
                    responseMessages = new List<Message> { errorMsg };
                    break;
                }
            }

            foreach (var msgToSend in responseMessages)
                Logger.Trace("Sending " + msgToSend.MessageType + " message.");

            var marshalledResponse = _marshaller.Marshall(responseMessages);
            data.Callback(marshalledResponse);
        }