Exemplo n.º 1
0
        /// <summary>
        /// Starts all subscriptions in the manager
        /// </summary>
        public void StartAllSubscriptions()
        {
            // get list of active subscriptions
            var activeSubscriptions = _repository.GetAllActiveSubscriptions().ToDictionary(s => s.ID, s => s);

            if (activeSubscriptions.Count > 0)
            {
                // add any new subscriptions to the list
                AddNewSubscriptions(activeSubscriptions.Values);

                // start all subscriptions that are not already running
                _subscriptions.Where(kvp => activeSubscriptions.ContainsKey(kvp.Key) &&
                                     kvp.Value.Status != SubscriptionStatus.Running)
                .AsParallel()
                .ForAll(kvp =>
                {
                    // update data for the subscription
                    kvp.Value.UpdateSubscriptionData(activeSubscriptions[kvp.Key]);

                    // start running the subscription
                    kvp.Value.Start();
                });

                // start updating data for subscriptions regularly
                _dataUpdateTimer.Change(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(1));
            }
            else
            {
                _logger.WarnFormat(Resources.NoSubscriptionsFoundWarning);
            }
        }