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)); }
public void Enqueue(IBrowserContent content) { pool.Enqueue(content, this); }
public Page(IBrowserContent request, MovieBuilder builder) { Request = request; Builder = builder; }