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;
            }
        }
Exemplo n.º 2
0
        public override void Open()
        {
            if (!_configuredWell)
            {
                return;
            }

            try
            {
                _publisher.Open();
            }
            catch (CGateException exception)
            {
                _logger.Error(exception, $"{Name}: CGateException: ErrCode={exception.ErrCode}, Message={exception.Message}");
                throw;
            }
            catch (Exception exception)
            {
                _logger.Error(exception, $"{Name}: Exception: {exception.Message}");
                throw;
            }

            _logger.Info($"{Name}: Publisher is opened");

            _stream.Open();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Обработка события возможного изменения состояния потока
        /// </summary>
        private void StateMightBeenChangedHandler(string streamName, StreamRegime regime)
        {
            _logger.Info($"Stream {streamName} state changed to {regime}");
            var lockTaken = false;

            try
            {
                _logger.Debug("Trying to lock spinLock");
                _spinLock.Enter(ref lockTaken);
                _logger.Debug("Changing needToCheckSubconnectionsState to true");
            }
            finally
            {
                if (lockTaken)
                {
                    _logger.Debug("SpinLock was taken and");
                    _spinLock.Exit();
                }
                else
                {
                    _logger.Debug("Spin lock wasn't taken and needToCheckSubconnectionsState != true");
                }
            }
        }