Пример #1
0
 private MessageStatus ProcessExternalMessages(INyxMessage msg)
 {
     if (FilterMessage(msg))
     {
         return(msg.Filtered(this, "Filtered."));
     }
     if (msg.Direction == MessageDirection.In)
     {
         ProcessMessageActions(msg.AsReadOnly());
     }
     _messageReceived.OnNext(msg.SuccessfullReceived(this));
     return(msg.SuccessfullSent(this));
 }
Пример #2
0
        /// <summary>
        ///     Override this for handling the SubSocket receive
        /// </summary>
        /// <param name="msg"></param>
        private void ReceivedMessage(INyxMessage msg)
        {
            var data = string.Empty;

            try
            {
                _logger.Trace("Received message...");
                _logger.Trace("Message source: {0}", msg.Source);

                if (FilterMessage(msg))
                {
                    return;
                }

                // Run message processing in another thread
                var readOnly = msg.AsReadOnly();
                void processMessages() => ProcessMessageActions(readOnly);

                if (_multithread)
                {
                    _tasker.QueueTask(processMessages);
                }
                else
                {
                    processMessages();
                }

                // Notify
                _messageReceived.OnNext(msg.SuccessfullReceived(this));
            }

            catch (Exception ex)
            {
                _logger.Error($"Exception caught in message {data}.", ex);
            }
        }