internal BrowserPageInspectSubscription(MovieBuilderPool pool, IBrowserContent request, IBrowser browser, MovieBuilder builder)
 {
     this.builder = builder;
     this.request = request;
     this.browser = browser;
     this.pool    = pool;
 }
        internal void Enqueue(IBrowserContent request, MovieBuilder builder)
        {
            IBrowser browser;

            if (runningPages.Count < MaxRunningPages && availableWorkers.TryDequeue(out browser))
            {
                try
                {
                    lock (this)
                    {
                        runningPages.Add(new RunningPage(request.Uri, builder, browser));
                    }
                    browser.Navigate(request.Uri).ContinueWith(task => PageLoaded(new BrowserPageInspectSubscription(this, request, browser, builder)));
                    return;
                }
                catch (Exception ex)
                {
                    logger.Error(string.Format("Unable to navigate to the page {0}", request.Uri), ex);
                    availableWorkers.Enqueue(browser);
                    throw;
                }
            }

            logger.Info("An address has been enqueued: " + request.Uri);
            enqueuedPages.Enqueue(new Page(request, builder));
        }
Exemple #3
0
 public void Enqueue(IBrowserContent content)
 {
     pool.Enqueue(content, this);
 }
 public Page(IBrowserContent request, MovieBuilder builder)
 {
     Request = request;
     Builder = builder;
 }