class BridgeController
Controls pooled drivers and cached sessions.
Nested
Definitions
def initialize(bridge, capabilities: bridge.default_capabilities)
Initialize the bridge controller.
Signature
-
parameter
bridgeBridge The bridge used to create drivers.
-
parameter
capabilitiesHash Capabilities used for new sessions.
Implementation
def initialize(bridge, capabilities: bridge.default_capabilities)
@bridge = bridge
@capabilities = capabilities
@pool = Async::Pool::Controller.new(self)
end
def call
Constructor for the pool.
Implementation
def call
SessionCache.new(@bridge.start, @capabilities)
end
def acquire
Acquire a session payload from the pool.
Signature
-
returns
Hash The acquired session payload.
Implementation
def acquire
session_cache = @pool.acquire
return session_cache.acquire
end
def release(session)
Return a session payload to the pool.
Signature
-
parameter
sessionHash The session payload to release.
Implementation
def release(session)
session_cache = session[:cache]
session_cache.release(session)
@pool.release(session_cache)
end
def retire(session)
Retire a session payload and its cache from the pool.
Signature
-
parameter
sessionHash The session payload to retire.
Implementation
def retire(session)
session_cache = session[:cache]
session_cache.release(session)
@pool.retire(session_cache)
end
def close
Close the underlying driver pool.
Implementation
def close
if @pool
@pool.close
@pool = nil
end
end