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)); }
/// <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); } }