Exemplo n.º 1
0
        private int Handler(Connection conn, Listener listener, Message msg)
        {
            try
            {
                if (!_configuredWell)
                {
                    return(-1);
                }

                if (Name == "FORTS_FUTTRADE_REPL" && SchemeFileName.Contains("fut_trades.ini"))
                {
                    _logger.Info($"#FTR: {msg.GetType()}");
                }

                if (Name == "FORTS_OPTTRADE_REPL" && SchemeFileName.Contains("opt_trades.ini"))
                {
                    _logger.Info($"#OTR: {msg.GetType()}");
                }

                // если получены потоковые данные, то процессим их специфическим для каждого потока конвертером
                if (msg.Type == MessageType.MsgStreamData)
                {
                    var message = Converter.ConvertToAdapterMessage((StreamDataMessage)msg);
                    message.StreamRegime = Regime;
                    message.StreamName   = Name;
                    _callback.HandleMessage(this, message);
                    _logger.Trace("{0}", message);
                }
                else if (msg.Type == MessageType.MsgData)
                {
                    var dm      = (DataMessage)msg;
                    var message = Converter.ConvertToAdapterMessage(dm);
                    message.StreamRegime = Regime;
                    message.StreamName   = Name;
                    message.UserId       = dm.UserId;
                    _callback.HandleMessage(this, message);
                    _logger.Debug($"UserId={((DataMessage)msg).UserId}; Message={message}");
                }

                // если это общее для всех потоков сообщение, то процессим его в базовом классе
                else
                {
                    ProcessMessagesCommonForAllStreams(msg);
                }

                return(0);
            }
            catch (Exception exception)
            {
                _logger.Error(exception, $"{NameForLogging}: Exception: {exception.Message}");
                throw;
            }
        }