/// <summary> /// Конструктор для создания потока сообщений, привязанного к паблишеру /// </summary> public CGateStream( string refListener, CGateStreamType streamType, IMessageConverter converter, ICGateStreamCallback callback, ICGateLogger logger, string mode = "", bool transactional = true) { _callback = callback; _logger = logger; Transactional = transactional; _isPublisherReplyStream = true; RefListener = refListener; Converter = converter; StreamType = streamType; if (!string.IsNullOrEmpty(mode)) { _mode = mode; } _callback.RegisterStream(this); _configuredWell = true; }
/// <summary> /// Конструктор для создания потока репликации общей информации /// </summary> /// <param name="name">Название потока</param> /// <param name="streamType">Тип потока</param> /// <param name="schemeFileName">Имя файла схемы (ini)</param> /// <param name="schemeName">Имя схемы</param> /// <param name="converter">Конвертер сообщений</param> /// <param name="callback">Интерфейс который нужно дёргать для передачи ему полученных сообщений</param> /// <param name="logger">Логгер</param> /// <param name="dependOnStreams">Потоки, от которых зависит данный поток. Сначала нужно дождаться их подключения, потом подключаться самому</param> /// <param name="mode">Режим, в котором должен работать поток</param> /// <param name="useReplStateWhenReconnect">Использовать ли replstate при переподключении или стартовать с нуля</param> /// <param name="transactional">Признак того, что поток транзакционный, то есть в нем приходит OSCMы и сделки</param> public CGateStream( string name, CGateStreamType streamType, string schemeFileName, string schemeName, IMessageConverter converter, ICGateStreamCallback callback, ICGateLogger logger, CGateStream[] dependOnStreams = null, string mode = "", bool useReplStateWhenReconnect = true, bool transactional = false) { _callback = callback; _logger = logger; Name = name; StreamType = streamType; SchemeFileName = schemeFileName; SchemeName = schemeName; Converter = converter; Transactional = transactional; _dependOnStreams = dependOnStreams; if (!string.IsNullOrEmpty(mode)) { _mode = mode; } _useReplStateWhenReconnect = useReplStateWhenReconnect; if (!File.Exists(schemeFileName)) { _logger.Error($"File {schemeFileName} doesn't exist, stream {Name} won't be started"); _configuredWell = false; return; } _callback.RegisterStream(this); _configuredWell = true; }