Class: SolidQueue::Pool
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#create_thread, #handle_thread_error, #wrap_in_app_executor
Constructor Details
#initialize(size, on_idle: nil) ⇒ Pool
Returns a new instance of Pool.
13
14
15
16
17
18
|
# File 'lib/solid_queue/pool.rb', line 13
def initialize(size, on_idle: nil)
@size = size
@on_idle = on_idle
@available_capacity = size
@mutex = Mutex.new
end
|
Instance Attribute Details
#size ⇒ Object
Returns the value of attribute size.
11
12
13
|
# File 'lib/solid_queue/pool.rb', line 11
def size
@size
end
|
Class Method Details
.build(type:, size:, on_idle: nil) ⇒ Object
7
8
9
|
# File 'lib/solid_queue/pool.rb', line 7
def self.build(type:, size:, on_idle: nil)
SolidQueue.const_get("#{type.to_s.camelize}Pool").new(size, on_idle: on_idle)
end
|
Instance Method Details
#available_capacity ⇒ Object
35
36
37
|
# File 'lib/solid_queue/pool.rb', line 35
def available_capacity
mutex.synchronize { @available_capacity }
end
|
#idle? ⇒ Boolean
39
40
41
|
# File 'lib/solid_queue/pool.rb', line 39
def idle?
available_capacity.positive?
end
|
#post(execution) ⇒ Object
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/solid_queue/pool.rb', line 24
def post(execution)
reserve_capacity!
begin
schedule(execution)
rescue Exception
restore_capacity
raise
end
end
|
#type ⇒ Object
20
21
22
|
# File 'lib/solid_queue/pool.rb', line 20
def type
self.class.name.demodulize.delete_suffix("Pool").underscore.to_sym
end
|