Ejemplo n.º 1
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());
        }