-
- All Implemented Interfaces:
-
ai.platon.pulsar.common.config.Parameterized,java.lang.AutoCloseable
public class WebDriverPoolManager extends PreemptChannelSupport implements Parameterized, AutoCloseable
Created by vincent on 18-1-1. Copyright @ 2013-2017 Platon AI. All rights reserved
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public classWebDriverPoolManager.Companion
-
Field Summary
Fields Modifier and Type Field Description private final WebDriverSettingsdriverSettingsprivate final DurationidleTimeoutprivate final Map<BrowserId, LoadingWebDriverPool>driverPoolsprivate final Set<BrowserId>retiredDriverPoolsprivate final InstantstartTimeprivate InstantlastActiveTimeprivate final DurationidleTimeprivate final BooleanisIdleprivate final MeternumResetprivate final MeternumTimeoutprivate final Map<String, Gauge<out Object>>gaugesprivate final IntegernumWaitingprivate final IntegernumFreeDriversprivate final IntegernumWorkingDriversprivate final IntegernumAvailableDriversprivate final IntegernumOnlineprivate final BrowserManagerbrowserManagerprivate final WebDriverFactorydriverFactoryprivate final ImmutableConfigimmutableConfigprivate final BooleansuppressMetricsprivate final BooleanhasEventprivate final BooleanisNormalprivate final BooleanisPreemptedprivate final Stringname
-
Constructor Summary
Constructors Constructor Description WebDriverPoolManager(BrowserManager browserManager, WebDriverFactory driverFactory, ImmutableConfig immutableConfig, Boolean suppressMetrics)
-
Method Summary
Modifier and Type Method Description final WebDriverSettingsgetDriverSettings()final DurationgetIdleTimeout()final Map<BrowserId, LoadingWebDriverPool>getDriverPools()final Set<BrowserId>getRetiredDriverPools()final InstantgetStartTime()final InstantgetLastActiveTime()final UnitsetLastActiveTime(Instant lastActiveTime)final DurationgetIdleTime()final BooleangetIsIdle()final MetergetNumReset()final MetergetNumTimeout()final Map<String, Gauge<out Object>>getGauges()final IntegergetNumWaiting()final IntegergetNumFreeDrivers()final IntegergetNumWorkingDrivers()final IntegergetNumAvailableDrivers()final IntegergetNumOnline()final BrowserManagergetBrowserManager()final WebDriverFactorygetDriverFactory()final ImmutableConfiggetImmutableConfig()final BooleangetSuppressMetrics()final BooleangetHasEvent()final BooleangetIsNormal()final BooleangetIsPreempted()final StringgetName()final FetchResultrun(FetchTask task, SuspendFunction1<WebDriver, FetchResult> browseFun)final FetchResultrun(BrowserId browserId, FetchTask task, SuspendFunction1<WebDriver, FetchResult> browseFun)TODO: consider pro-actor model insteadreactor: tell me if you can do this job pro-actor: here is a job, tell me if you finished it final FetchResultrun(WebDriverTask task)final FetchResultrunCancelable(WebDriverTask task, WebDriver driver)final LoadingWebDriverPoolcreateUnmanagedDriverPool(BrowserId browserId, Integer priority)Create a driver pool, but the driver pool is not added to driverPools final BooleanisRetiredPool(BrowserId browserId)final WebDrivercancel(String url)Cancel the fetch task specified by url remotely. final WebDrivercancel(BrowserId browserId, String url)Cancel the fetch task specified by url remotely NOTE: A cancel request should run immediately not waiting for any browser task return final UnitcancelAll()Cancel all the fetch tasks, stop loading all pages final UnitcancelAll(BrowserId browserId)Cancel all the fetch tasks, stop loading all pages final UnitcloseDriverPoolGracefully(BrowserId browserId, Duration timeToWait)Cancel all running tasks and close all web drivers final StringformatStatus(BrowserId browserId, Boolean verbose)Unitclose()StringtoString()-
Methods inherited from class ai.platon.pulsar.protocol.browser.driver.WebDriverPoolManager
formatPreemptChannelStatus, getParams, preempt, releaseLocks, whenNormal, whenNormalDeferred -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
Constructor Detail
-
WebDriverPoolManager
WebDriverPoolManager(BrowserManager browserManager, WebDriverFactory driverFactory, ImmutableConfig immutableConfig, Boolean suppressMetrics)
-
-
Method Detail
-
getDriverSettings
final WebDriverSettings getDriverSettings()
-
getIdleTimeout
final Duration getIdleTimeout()
-
getDriverPools
final Map<BrowserId, LoadingWebDriverPool> getDriverPools()
-
getRetiredDriverPools
final Set<BrowserId> getRetiredDriverPools()
-
getStartTime
final Instant getStartTime()
-
getLastActiveTime
final Instant getLastActiveTime()
-
setLastActiveTime
final Unit setLastActiveTime(Instant lastActiveTime)
-
getIdleTime
final Duration getIdleTime()
-
getNumReset
final Meter getNumReset()
-
getNumTimeout
final Meter getNumTimeout()
-
getNumWaiting
final Integer getNumWaiting()
-
getNumFreeDrivers
final Integer getNumFreeDrivers()
-
getNumWorkingDrivers
final Integer getNumWorkingDrivers()
-
getNumAvailableDrivers
final Integer getNumAvailableDrivers()
-
getNumOnline
final Integer getNumOnline()
-
getBrowserManager
final BrowserManager getBrowserManager()
-
getDriverFactory
final WebDriverFactory getDriverFactory()
-
getImmutableConfig
final ImmutableConfig getImmutableConfig()
-
getSuppressMetrics
final Boolean getSuppressMetrics()
-
getHasEvent
final Boolean getHasEvent()
-
getIsNormal
final Boolean getIsNormal()
-
getIsPreempted
final Boolean getIsPreempted()
-
run
final FetchResult run(FetchTask task, SuspendFunction1<WebDriver, FetchResult> browseFun)
-
run
final FetchResult run(BrowserId browserId, FetchTask task, SuspendFunction1<WebDriver, FetchResult> browseFun)
TODO: consider pro-actor model instead
reactor: tell me if you can do this job pro-actor: here is a job, tell me if you finished it
-
run
final FetchResult run(WebDriverTask task)
-
runCancelable
final FetchResult runCancelable(WebDriverTask task, WebDriver driver)
-
createUnmanagedDriverPool
final LoadingWebDriverPool createUnmanagedDriverPool(BrowserId browserId, Integer priority)
Create a driver pool, but the driver pool is not added to driverPools
-
isRetiredPool
final Boolean isRetiredPool(BrowserId browserId)
-
cancel
final WebDriver cancel(String url)
Cancel the fetch task specified by url remotely. NOTE: A cancel request should run immediately not waiting for any browser task return.
-
cancel
final WebDriver cancel(BrowserId browserId, String url)
Cancel the fetch task specified by url remotely NOTE: A cancel request should run immediately not waiting for any browser task return
-
cancelAll
final Unit cancelAll(BrowserId browserId)
Cancel all the fetch tasks, stop loading all pages
-
closeDriverPoolGracefully
final Unit closeDriverPoolGracefully(BrowserId browserId, Duration timeToWait)
Cancel all running tasks and close all web drivers
-
formatStatus
final String formatStatus(BrowserId browserId, Boolean verbose)
-
-
-
-