Ejemplo n.º 1
0
        public ChannelService(IServiceProvider serviceProvider)
        {
            //_serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
            _cancellationSource = new CancellationTokenSource();

            _appConfig     = serviceProvider.GetRequiredService <IAppSettingsConfig>();
            _logger        = serviceProvider.GetRequiredService <ILogger>();
            _database      = serviceProvider.GetRequiredService <IDatabase>();
            _dataAdapter   = serviceProvider.GetRequiredService <IChannelDataAdapter>();
            _scanner       = serviceProvider.GetRequiredService <IMessageScanner>();
            _receiver      = serviceProvider.GetRequiredService <IMessageReceiver>();
            _channelStatus = serviceProvider.GetRequiredService <ChannelStatus>();
            //_publisher = new MessagePublisher(this);

            _scanner.NewMessages           += Scanner_NewMessages;
            _channelStatus.PropertyChanged += ChannelStatus_Changed;

            _mainChannelSettings = _appConfig.MainChannelSettings();
            _channelSettings     = _appConfig.ChannelSettings();
            _databaseSettings    = _appConfig.DatabaseSettings();
            _messageSettings     = _appConfig.MessageSettings();
            //_serviceSettings = _appConfig.ServiceSettings();

            this.ProcessId   = Process.GetCurrentProcess().Id;
            this.VirtAddress = _mainChannelSettings.VirtAddress;
        }
        private int?CallReceiveMessageSP(Message msg)
        {
            int?resLink = null;

            DatabaseSettings databaseSettings = _appConfig.DatabaseSettings();

            if (databaseSettings.ReceiveMessageSPEnabled)
            {
                string receiveMessageSP = databaseSettings.ReceiveMessageSP;
                if (String.IsNullOrWhiteSpace(receiveMessageSP))
                {
                    throw new ConfigSettingsException("Не задано имя хранимой процедуры приема сообщений.", "DATABASE.RECEIVE_SP");
                }

                _logger.LogTrace(String.Format("Вызов хранимой процедуры \"{0}\" для сообщения {1}.", receiveMessageSP, msg));
                resLink = _dataAdapter.CallReceiveMessageSP(receiveMessageSP, msg, databaseSettings.ReceiveMessageSPUseOutputParam);
            }

            return(resLink);
        }