public EventStoreSubscriptions Add(SubscriptionPoller poller) { if (_pollers.Contains(poller)) { return(this); } _pollers.Add(poller); return(this); }
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); }
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()); }