Class: Async::WebDriver::Bridge::Pool::BridgeController::SessionCache

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

Overview

Caches sessions created from a single driver instance.

Instance Method Summary collapse

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

#acquireObject

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

#closeObject

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

#concurrencyObject



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

Returns:

  • (Boolean)


57
58
59
# File 'lib/async/webdriver/bridge/pool.rb', line 57

def reusable?
	@driver&.reusable?
end

#viable?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/async/webdriver/bridge/pool.rb', line 52

def viable?
	@driver&.viable?
end