Class: Qs::Queue
- Inherits:
-
Object
- Object
- Qs::Queue
- Defined in:
- lib/qs/queue.rb
Defined Under Namespace
Modules: RedisKey
Constant Summary collapse
- InvalidError =
Class.new(RuntimeError)
Instance Attribute Summary collapse
-
#enqueued_jobs ⇒ Object
readonly
Returns the value of attribute enqueued_jobs.
-
#event_route_names ⇒ Object
readonly
Returns the value of attribute event_route_names.
-
#routes ⇒ Object
readonly
Returns the value of attribute routes.
Instance Method Summary collapse
- #clear_subscriptions ⇒ Object
- #enqueue(job_name, params = nil) ⇒ Object (also: #add)
- #event(channel, name, handler_name) ⇒ Object
- #event_handler_ns(value = nil) ⇒ Object
-
#initialize(&block) ⇒ Queue
constructor
A new instance of Queue.
- #inspect ⇒ Object
- #job(name, handler_name) ⇒ Object
- #job_handler_ns(value = nil) ⇒ Object
- #name(value = nil) ⇒ Object
- #published_events ⇒ Object
- #redis_key ⇒ Object
- #reset! ⇒ Object
- #sync_subscriptions ⇒ Object
Constructor Details
#initialize(&block) ⇒ Queue
Returns a new instance of Queue.
11 12 13 14 15 16 17 |
# File 'lib/qs/queue.rb', line 11 def initialize(&block) @routes = [] @event_route_names = [] @enqueued_jobs = [] self.instance_eval(&block) if !block.nil? raise InvalidError, "a queue must have a name" if self.name.nil? end |
Instance Attribute Details
#enqueued_jobs ⇒ Object (readonly)
Returns the value of attribute enqueued_jobs.
9 10 11 |
# File 'lib/qs/queue.rb', line 9 def enqueued_jobs @enqueued_jobs end |
#event_route_names ⇒ Object (readonly)
Returns the value of attribute event_route_names.
8 9 10 |
# File 'lib/qs/queue.rb', line 8 def event_route_names @event_route_names end |
#routes ⇒ Object (readonly)
Returns the value of attribute routes.
8 9 10 |
# File 'lib/qs/queue.rb', line 8 def routes @routes end |
Instance Method Details
#clear_subscriptions ⇒ Object
68 69 70 |
# File 'lib/qs/queue.rb', line 68 def clear_subscriptions Qs.clear_subscriptions(self) end |
#enqueue(job_name, params = nil) ⇒ Object Also known as: add
59 60 61 |
# File 'lib/qs/queue.rb', line 59 def enqueue(job_name, params = nil) Qs.enqueue(self, job_name, params) end |
#event(channel, name, handler_name) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/qs/queue.rb', line 47 def event(channel, name, handler_name) if self.event_handler_ns && !(handler_name =~ /^::/) handler_name = "#{self.event_handler_ns}::#{handler_name}" end route_name = Qs::Event::RouteName.new(channel, name) route_id = Qs::Message::RouteId.new(Qs::Event::PAYLOAD_TYPE, route_name) @event_route_names.push(route_name) @routes.push(Qs::Route.new(route_id, handler_name)) end |
#event_handler_ns(value = nil) ⇒ Object
33 34 35 36 |
# File 'lib/qs/queue.rb', line 33 def event_handler_ns(value = nil) @event_handler_ns = value if !value.nil? @event_handler_ns end |
#inspect ⇒ Object
80 81 82 83 84 85 86 |
# File 'lib/qs/queue.rb', line 80 def inspect reference = '0x0%x' % (self.object_id << 1) "#<#{self.class}:#{reference} " \ "@name=#{self.name.inspect} " \ "@job_handler_ns=#{self.job_handler_ns.inspect} " \ "@event_handler_ns=#{self.event_handler_ns.inspect}>" end |
#job(name, handler_name) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/qs/queue.rb', line 38 def job(name, handler_name) if self.job_handler_ns && !(handler_name =~ /^::/) handler_name = "#{self.job_handler_ns}::#{handler_name}" end route_id = Message::RouteId.new(Qs::Job::PAYLOAD_TYPE, name) @routes.push(Qs::Route.new(route_id, handler_name)) end |
#job_handler_ns(value = nil) ⇒ Object
28 29 30 31 |
# File 'lib/qs/queue.rb', line 28 def job_handler_ns(value = nil) @job_handler_ns = value if !value.nil? @job_handler_ns end |
#name(value = nil) ⇒ Object
19 20 21 22 |
# File 'lib/qs/queue.rb', line 19 def name(value = nil) @name = value if !value.nil? @name end |
#published_events ⇒ Object
72 73 74 |
# File 'lib/qs/queue.rb', line 72 def published_events self.enqueued_jobs.map(&:event) end |
#redis_key ⇒ Object
24 25 26 |
# File 'lib/qs/queue.rb', line 24 def redis_key @redis_key ||= RedisKey.new(self.name) end |
#reset! ⇒ Object
76 77 78 |
# File 'lib/qs/queue.rb', line 76 def reset! self.enqueued_jobs.clear end |
#sync_subscriptions ⇒ Object
64 65 66 |
# File 'lib/qs/queue.rb', line 64 def sync_subscriptions Qs.sync_subscriptions(self) end |