Class: NinjaModel::Adapters::AdapterPool
- Inherits:
-
Object
- Object
- NinjaModel::Adapters::AdapterPool
- Defined in:
- lib/ninja_model/adapters/adapter_pool.rb
Instance Attribute Summary collapse
-
#instances ⇒ Object
readonly
Returns the value of attribute instances.
-
#spec ⇒ Object
readonly
Returns the value of attribute spec.
Instance Method Summary collapse
- #connected? ⇒ Boolean
-
#initialize(spec) ⇒ AdapterPool
constructor
A new instance of AdapterPool.
- #instance ⇒ Object
- #release_instance(with_id = current_instance_id) ⇒ Object
- #shutdown! ⇒ Object
- #with_instance ⇒ Object
Constructor Details
#initialize(spec) ⇒ AdapterPool
Returns a new instance of AdapterPool.
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/ninja_model/adapters/adapter_pool.rb', line 8 def initialize(spec) @spec = spec @instances = [] @checked_out_instances = [] @assigned_instances = {} @instance_mutex = Monitor.new @instance_queue = @instance_mutex.new_cond @max_size = 5 @timeout = 3 end |
Instance Attribute Details
#instances ⇒ Object (readonly)
Returns the value of attribute instances.
7 8 9 |
# File 'lib/ninja_model/adapters/adapter_pool.rb', line 7 def instances @instances end |
#spec ⇒ Object (readonly)
Returns the value of attribute spec.
7 8 9 |
# File 'lib/ninja_model/adapters/adapter_pool.rb', line 7 def spec @spec end |
Instance Method Details
#connected? ⇒ Boolean
19 20 21 |
# File 'lib/ninja_model/adapters/adapter_pool.rb', line 19 def connected? !@instances.empty? end |
#instance ⇒ Object
23 24 25 26 |
# File 'lib/ninja_model/adapters/adapter_pool.rb', line 23 def instance NinjaModel.logger.debug("instance called for #{current_instance_id}") @assigned_instances[current_instance_id] ||= checkout end |
#release_instance(with_id = current_instance_id) ⇒ Object
28 29 30 31 |
# File 'lib/ninja_model/adapters/adapter_pool.rb', line 28 def release_instance(with_id = current_instance_id) inst = @assigned_instances.delete(with_id) checkin inst if inst end |
#shutdown! ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/ninja_model/adapters/adapter_pool.rb', line 41 def shutdown! @assigned_instances.each do |name,conn| checkin conn end @assigned_instances = {} @instances.each do |inst| inst.disconnect! end @instances = [] end |
#with_instance ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/ninja_model/adapters/adapter_pool.rb', line 33 def with_instance instance_id = current_instance_id fresh_instance = true unless @assigned_instances[instance_id] yield instance ensure release_instance(instance_id) if fresh_instance end |