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