Ejemplo n.º 1
0
 public EventStoreSubscriptions Add(SubscriptionPoller poller)
 {
     if (_pollers.Contains(poller))
     {
         return(this);
     }
     _pollers.Add(poller);
     return(this);
 }
Ejemplo n.º 2
0
        public Runner(IContractsRegistry contractsRegistry, ILogger logger, IPollerStateRepository stateRepository, SubscriptionPoller poller, IUpConverterFactory upConverterFactory)
        {
            if (poller == null)
            {
                throw new ArgumentNullException(nameof(poller));
            }
            Poller = poller;

            _pollerContext = new PollerContext(contractsRegistry, logger, stateRepository, upConverterFactory);
            _startedAt     = new InterlockedDateTime(DateTime.MaxValue);
            _timeoutCalc   = new PollerTimeoutCalculator(Poller.GetFetchTimeout());
            _runnerTimer   = CreateTimer(_timeoutCalc);
        }
Ejemplo n.º 3
0
        private void SynchronizeStates(SubscriptionPoller poller)
        {
            var pollerContractName   = _contractRegistry.GetContractName(poller.GetType());
            var handlerContractNames = poller.GetRegisteredHandlers().Select(x => _contractRegistry.GetContractName(x)).ToArray();
            var sourceContractNames  = poller.Sources.Select(x => _contractRegistry.GetContractName(x.GetType())).ToArray();

            var storedStates = _pollerStateRepository.Load(pollerContractName);

            var statesToDelete = new List <PollerState>(5);
            var statesToAdd    = new List <PollerState>(5);

            FillStatesToSynchronize(
                pollerContractName,
                storedStates,
                sourceContractNames,
                handlerContractNames,
                statesToAdd,
                statesToDelete);

            _pollerStateRepository.DeleteStates(statesToDelete.ToArray());
            _pollerStateRepository.CreateStates(statesToAdd.ToArray());
        }