Class: BunnyHair::Queue
- Inherits:
-
Object
- Object
- BunnyHair::Queue
- Defined in:
- lib/bunny_hair/queue.rb
Instance Attribute Summary collapse
-
#exchange ⇒ Object
readonly
Returns the value of attribute exchange.
-
#message_count ⇒ Object
readonly
Returns the value of attribute message_count.
-
#messages ⇒ Object
readonly
Returns the value of attribute messages.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
- #auto_delete? ⇒ Boolean
- #bind(exchange, options = {}) ⇒ Object
- #consumers ⇒ Object
- #delete ⇒ Object
-
#initialize(name, options = {}) ⇒ Queue
constructor
A new instance of Queue.
- #pop ⇒ Object
- #publish(payload) ⇒ Object
- #receive(metadata, info, payload) ⇒ Object
- #subscribe(opts = {}, &block) ⇒ Object
Constructor Details
#initialize(name, options = {}) ⇒ Queue
Returns a new instance of Queue.
5 6 7 8 9 10 |
# File 'lib/bunny_hair/queue.rb', line 5 def initialize(name, ={}) @name = name @options = @message_count = 0 @messages ||= [] end |
Instance Attribute Details
#exchange ⇒ Object (readonly)
Returns the value of attribute exchange.
3 4 5 |
# File 'lib/bunny_hair/queue.rb', line 3 def exchange @exchange end |
#message_count ⇒ Object (readonly)
Returns the value of attribute message_count.
3 4 5 |
# File 'lib/bunny_hair/queue.rb', line 3 def @message_count end |
#messages ⇒ Object (readonly)
Returns the value of attribute messages.
3 4 5 |
# File 'lib/bunny_hair/queue.rb', line 3 def @messages end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/bunny_hair/queue.rb', line 3 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
3 4 5 |
# File 'lib/bunny_hair/queue.rb', line 3 def @options end |
Instance Method Details
#auto_delete? ⇒ Boolean
52 53 54 |
# File 'lib/bunny_hair/queue.rb', line 52 def auto_delete? !![:auto_delete] end |
#bind(exchange, options = {}) ⇒ Object
16 17 18 19 |
# File 'lib/bunny_hair/queue.rb', line 16 def bind(exchange, ={}) @exchange = exchange exchange.queues << self end |
#consumers ⇒ Object
12 13 14 |
# File 'lib/bunny_hair/queue.rb', line 12 def consumers @consumers ||= [] end |
#delete ⇒ Object
21 22 23 |
# File 'lib/bunny_hair/queue.rb', line 21 def delete @exchange.queues.delete_if { |q| q.name == name } end |
#pop ⇒ Object
25 26 27 |
# File 'lib/bunny_hair/queue.rb', line 25 def pop @messages.pop end |
#publish(payload) ⇒ Object
48 49 50 |
# File 'lib/bunny_hair/queue.rb', line 48 def publish(payload) receive(nil, nil, payload) end |
#receive(metadata, info, payload) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/bunny_hair/queue.rb', line 36 def receive(, info, payload) ||= OpenStruct.new info ||= OpenStruct.new @messages << [, info, payload] @message_count += 1 consumers.each do |subscription| subscription.call(info, , payload) end end |