Class: Async::WebDriver::Bridge::Pool

Inherits:
Object
  • Object
show all
Defined in:
lib/async/webdriver/bridge/pool.rb

Overview

A pool of sessions, constructed from a bridge, which instantiates drivers as needed. Drivers are capable of supporting 1 ore more sessions.

“‘ ruby begin bridge = Async::WebDriver::Bridge::Pool.new(Async::WebDriver::Bridge::Chrome.new) session = bridge.session

# ...
session.close

ensure bridge&.close end “‘

Defined Under Namespace

Classes: BridgeController, CachedWrapper

Instance Method Summary collapse

Constructor Details

#initializePool

Initialize the session pool.



153
154
155
# File 'lib/async/webdriver/bridge/pool.rb', line 153

def initialize(...)
	@controller = Async::Actor.new(BridgeController.new(...))
end

Instance Method Details

#closeObject

Close the session pool.



158
159
160
# File 'lib/async/webdriver/bridge/pool.rb', line 158

def close
	@controller.close
end

#reuse(session) ⇒ Object

Reset and return a session to the pool.



200
201
202
203
204
205
206
# File 'lib/async/webdriver/bridge/pool.rb', line 200

def reuse(session)
	session.reset!
	
	@controller.release(session.payload)
	
	return true
end

#session(&block) ⇒ Object

Open a session.



183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'lib/async/webdriver/bridge/pool.rb', line 183

def session(&block)
	payload = @controller.acquire
	
	session = CachedWrapper.open(payload[:endpoint], payload["sessionId"], payload["capabilities"], pool: self, payload: payload)
	
	return session unless block_given?
	
	begin
		yield session
	ensure
		session&.close
	end
end