Exemplo n.º 1
0
        public SearchMonkeyService(IEbayFinder finder, INotifier notifier, ISearchRepositoryFactory repoFactory,
                                   ICompletedItemReviewer completedItemReviewer, IResultAggregator resultAggregator)
        {
            if (finder == null)
                throw new ArgumentNullException(nameof(finder));

            if (notifier == null)
                throw new ArgumentNullException(nameof(notifier));

            if (repoFactory == null)
                throw new ArgumentNullException(nameof(repoFactory));

            if (completedItemReviewer == null)
                throw new ArgumentNullException(nameof(completedItemReviewer));

            if (resultAggregator == null)
                throw new ArgumentNullException(nameof(resultAggregator));

            // Config settings
            _apiDailyRateLimit = Int32.Parse(ConfigurationManager.AppSettings["ApiDailyRateLimit"]);
            _apiRateThreshold = double.Parse(ConfigurationManager.AppSettings["ApiRateThreshold"]);

            _finder = finder;
            _notifier = notifier;
            _repoFactory = repoFactory;
            _completedItemReviewer = completedItemReviewer;
            _resultAggregator = resultAggregator;

            _cts = new CancellationTokenSource();

            _searchTask = t =>
            {
                try
                {
                    // Execute current search
                    var searchMetrics = ExecuteSearch();

                    // Schedule the next search
                    var nextSearchInterval = (SearchScheduleInterval * ((searchMetrics.ApiCallsMade) == 0 ? 1 : searchMetrics.ApiCallsMade)) - searchMetrics.ExecutionTime;
                    Task.Delay(TimeSpan.FromMilliseconds(nextSearchInterval >= 0 ? nextSearchInterval : 0), _cts.Token)
                                .ContinueWith(ta => _searchTask(t), _cts.Token);
                }
                catch(Exception ex)
                {
                    _log.Fatal(ex);
                }
            };

            InstallInstrumentation();
        }
 /// <summary>Initializes a new instance of the <see cref="SimpleTransformer"/> class.</summary>
 /// <param name="aggregator">The aggregator.</param>
 public SimpleTransformer(IResultAggregator aggregator)
 {
     _aggregator = aggregator;
 }
Exemplo n.º 3
0
 /// <summary>Initializes a new instance of the <see cref="SimpleTransformer"/> class.</summary>
 /// <param name="aggregator">The aggregator.</param>
 public SimpleTransformer(IResultAggregator aggregator)
 {
     _aggregator = aggregator;
 }