示例#1
0
        /// <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;
        }
示例#2
0
        /// <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;
        }