Class: DelayedJobWorkerPool::Registry
- Inherits:
-
Object
- Object
- DelayedJobWorkerPool::Registry
show all
- Defined in:
- lib/delayed_job_worker_pool/registry.rb
Overview
Keeps track of worker groups and their workers.
Defined Under Namespace
Classes: GroupAlreadyExists, GroupDoesNotExist, GroupNotFound
Instance Method Summary
collapse
Constructor Details
Returns a new instance of Registry.
10
11
12
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 10
def initialize
@groups = {}
end
|
Instance Method Details
#add_group(name, options) ⇒ Object
22
23
24
25
26
27
28
29
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 22
def add_group(name, options)
raise GroupAlreadyExists.new("Group #{group} already exists") if @groups.key?(name)
@groups[name] = {
options: options,
pids: []
}
end
|
#add_worker(group_name, pid) ⇒ Object
31
32
33
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 31
def add_worker(group_name, pid)
group_by_name(group_name)[:pids] << pid
end
|
#group(pid) ⇒ Object
47
48
49
50
51
52
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 47
def group(pid)
@groups.each do |name, group|
return name if group[:pids].include?(pid)
end
raise GroupNotFound.new("No group found for PID #{pid}")
end
|
#include_worker?(pid) ⇒ Boolean
14
15
16
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 14
def include_worker?(pid)
worker_pids.include?(pid)
end
|
#options(group_name) ⇒ Object
39
40
41
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 39
def options(group_name)
group_by_name(group_name)[:options]
end
|
#remove_worker(pid) ⇒ Object
35
36
37
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 35
def remove_worker(pid)
@groups[group(pid)][:pids].delete(pid)
end
|
#worker_pids ⇒ Object
43
44
45
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 43
def worker_pids
@groups.values.flat_map { |v| v[:pids] }
end
|
#workers? ⇒ Boolean
18
19
20
|
# File 'lib/delayed_job_worker_pool/registry.rb', line 18
def workers?
!worker_pids.empty?
end
|