Class: SuckerPunch::Queue
- Inherits:
-
Object
- Object
- SuckerPunch::Queue
show all
- Defined in:
- lib/sucker_punch/queue.rb
Defined Under Namespace
Classes: MaxWorkersExceeded, NotEnoughWorkers
Constant Summary
collapse
- DEFAULT_OPTIONS =
{ workers: 2 }
- PREFIX =
"sucker_punch"
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(klass) ⇒ Queue
Returns a new instance of Queue.
29
30
31
32
33
|
# File 'lib/sucker_punch/queue.rb', line 29
def initialize(klass)
@klass = klass
@pool = nil
@mutex = Mutex.new
end
|
Instance Attribute Details
#klass ⇒ Object
Returns the value of attribute klass.
5
6
7
|
# File 'lib/sucker_punch/queue.rb', line 5
def klass
@klass
end
|
#pool ⇒ Object
Returns the value of attribute pool.
6
7
8
|
# File 'lib/sucker_punch/queue.rb', line 6
def pool
@pool
end
|
Class Method Details
.clear_all ⇒ Object
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/sucker_punch/queue.rb', line 18
def self.clear_all
Celluloid::Actor.all.each do |actor|
registered_name = actor.registered_name.to_s
matches = registered_name.match(PREFIX).to_a
if matches.any?
Celluloid::Actor.delete(registered_name)
end
end
end
|
.find(klass) ⇒ Object
13
14
15
16
|
# File 'lib/sucker_punch/queue.rb', line 13
def self.find(klass)
queue = self.new(klass)
Celluloid::Actor[queue.name]
end
|
Instance Method Details
#name ⇒ Object
53
54
55
56
|
# File 'lib/sucker_punch/queue.rb', line 53
def name
klass_name = klass.to_s.underscore
"#{PREFIX}_#{klass_name}".to_sym
end
|
#register(num_workers = DEFAULT_OPTIONS[:workers]) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/sucker_punch/queue.rb', line 35
def register(num_workers = DEFAULT_OPTIONS[:workers])
num_workers ||= DEFAULT_OPTIONS[:workers]
raise MaxWorkersExceeded if num_workers > 200
raise NotEnoughWorkers if num_workers < 1
@mutex.synchronize {
unless registered?
initialize_celluloid_pool(num_workers)
register_celluloid_pool
end
}
self.class.find(klass)
end
|
#registered? ⇒ Boolean
49
50
51
|
# File 'lib/sucker_punch/queue.rb', line 49
def registered?
Celluloid::Actor.registered.include?(name.to_sym)
end
|