Example #1
0
        internal static List <NotificationMessage> GetData(INotificationDataReader[] readers, INotificationFiltersValidator filtersValidator,
                                                           IFiltersValidatorRepository filtersValidatorRepository, INotificationAggregatorsValidator aggregatorsValidator,
                                                           IAggregatorsValidatorRepository aggregatorsValidatorRepository)
        {
            var ret = new List <NotificationMessage>();

            if (!readers.Any())
            {
                return(ret);
            }

            foreach (var r in readers)
            {
                if (r is NotificationDataReaderDecorator decorator)
                {
                    filtersValidator?.SetFilters(filtersValidatorRepository?.GetFilters(decorator.GetId()));
                    (r as INotificationValidator).SetValidator(filtersValidator);
                    aggregatorsValidator?.SetAggregators(aggregatorsValidatorRepository?.GetAggregators(decorator.GetId()));
                    (r as INotificationAggregator).SetAggregator(aggregatorsValidator);
                }
                ret.AddRange(r.GetData());
            }

            return(ret);
        }
Example #2
0
        public HostFactoryNotifierProcessor(ANotifierProcessorParams notifierProcessorParams)
        {
            _dataReaders                    = (notifierProcessorParams as HostFactoryNotifierProcessorParams)?.DataReaders;
            _clientsManager                 = notifierProcessorParams.ClientsManager;
            _logger                         = notifierProcessorParams.Logger;
            _filtersValidator               = (notifierProcessorParams as HostFactoryNotifierProcessorParams)?.FiltersValidator;
            _filtersValidatorRepository     = (notifierProcessorParams as HostFactoryNotifierProcessorParams)?.FiltersValidatorRepository;
            _aggregatorsValidator           = (notifierProcessorParams as HostFactoryNotifierProcessorParams)?.AggregatorsValidator;
            _aggregatorsValidatorRepository = (notifierProcessorParams as HostFactoryNotifierProcessorParams)?.AggregatorsValidatorRepository;

            _lock = false;

            _timer = new Timer(notifierProcessorParams.Interval)
            {
                AutoReset = true
            };
            _timer.Elapsed += (sender, eventArgs) =>
            {
                ProcessingData();
            };
        }