Class: NewBridge::InstancePoolClient
- Inherits:
-
Object
- Object
- NewBridge::InstancePoolClient
- Defined in:
- lib/new_bridge/instance_pool_client.rb
Overview
Phase 2: manage a small pool of external R gatekeeper processes. Each instance is isolated by having its own TCP socket + R process.
Defined Under Namespace
Classes: Error
Instance Method Summary collapse
- #eval_r(code, session_id:, instance_id:, timeout: 60) ⇒ Object
-
#initialize(source_path:, instances:, host: '127.0.0.1', r_cmd: 'R') ⇒ InstancePoolClient
constructor
A new instance of InstancePoolClient.
- #start ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize(source_path:, instances:, host: '127.0.0.1', r_cmd: 'R') ⇒ InstancePoolClient
Returns a new instance of InstancePoolClient.
12 13 14 15 16 17 18 19 20 |
# File 'lib/new_bridge/instance_pool_client.rb', line 12 def initialize(source_path:, instances:, host: '127.0.0.1', r_cmd: 'R') @instances = instances @host = host @r_cmd = r_cmd @clients = {} instances.each do |instance_id| @clients[instance_id] = SessionClient.new(source_path: source_path, host: @host, r_cmd: @r_cmd) end end |
Instance Method Details
#eval_r(code, session_id:, instance_id:, timeout: 60) ⇒ Object
32 33 34 35 |
# File 'lib/new_bridge/instance_pool_client.rb', line 32 def eval_r(code, session_id:, instance_id:, timeout: 60) client = @clients.fetch(instance_id) client.eval_r(code, session_id: session_id, instance_id: instance_id, timeout: timeout) end |
#start ⇒ Object
22 23 24 25 |
# File 'lib/new_bridge/instance_pool_client.rb', line 22 def start @instances.each { |iid| @clients.fetch(iid).start } self end |
#stop ⇒ Object
27 28 29 30 |
# File 'lib/new_bridge/instance_pool_client.rb', line 27 def stop @clients.each_value(&:stop) self end |