Class: Async::WebDriver::Bridge::Pool::BridgeController::SessionCache
- Inherits:
-
Object
- Object
- Async::WebDriver::Bridge::Pool::BridgeController::SessionCache
- Defined in:
- lib/async/webdriver/bridge/pool.rb
Overview
Caches sessions created from a single driver instance.
Instance Method Summary collapse
-
#acquire ⇒ Object
Acquire a cached or newly created session payload.
-
#close ⇒ Object
Close the cached sessions, driver, and HTTP client.
- #concurrency ⇒ Object
-
#initialize(driver, capabilities) ⇒ SessionCache
constructor
Initialize a session cache for one driver instance.
-
#release(session) ⇒ Object
Return a session payload to the cache.
- #reusable? ⇒ Boolean
- #viable? ⇒ Boolean
Constructor Details
#initialize(driver, capabilities) ⇒ SessionCache
Initialize a session cache for one driver instance.
43 44 45 46 47 48 49 |
# File 'lib/async/webdriver/bridge/pool.rb', line 43 def initialize(driver, capabilities) @driver = driver @capabilities = capabilities @client = driver.client @sessions = [] end |
Instance Method Details
#acquire ⇒ Object
Acquire a cached or newly created session payload.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/async/webdriver/bridge/pool.rb', line 85 def acquire if @sessions.empty? session = @client.post("session", {capabilities: @capabilities}) if session.nil? raise Async::WebDriver::Error, "Failed to create session with capabilities: #{@capabilities.inspect}" end session[:cache] = self session[:endpoint] = @driver.endpoint return session else return @sessions.pop end end |
#close ⇒ Object
Close the cached sessions, driver, and HTTP client.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/async/webdriver/bridge/pool.rb', line 62 def close if @driver @driver.close @driver = nil end if @client @client.close @client = nil end if @sessions @sessions = nil end end |
#concurrency ⇒ Object
79 80 81 |
# File 'lib/async/webdriver/bridge/pool.rb', line 79 def concurrency @driver.concurrency end |
#release(session) ⇒ Object
Return a session payload to the cache.
104 105 106 |
# File 'lib/async/webdriver/bridge/pool.rb', line 104 def release(session) @sessions.push(session) end |
#reusable? ⇒ Boolean
57 58 59 |
# File 'lib/async/webdriver/bridge/pool.rb', line 57 def reusable? @driver&.reusable? end |
#viable? ⇒ Boolean
52 53 54 |
# File 'lib/async/webdriver/bridge/pool.rb', line 52 def viable? @driver&.viable? end |