Class: BunnyHair::Queue

Inherits:
Object
  • Object
show all
Defined in:
lib/bunny_hair/queue.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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, options={})
  @name = name
  @options = options
  @message_count = 0
	@messages ||= []
end

Instance Attribute Details

#exchangeObject (readonly)

Returns the value of attribute exchange.



3
4
5
# File 'lib/bunny_hair/queue.rb', line 3

def exchange
  @exchange
end

#message_countObject (readonly)

Returns the value of attribute message_count.



3
4
5
# File 'lib/bunny_hair/queue.rb', line 3

def message_count
  @message_count
end

#messagesObject (readonly)

Returns the value of attribute messages.



3
4
5
# File 'lib/bunny_hair/queue.rb', line 3

def messages
  @messages
end

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/bunny_hair/queue.rb', line 3

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



3
4
5
# File 'lib/bunny_hair/queue.rb', line 3

def options
  @options
end

Instance Method Details

#auto_delete?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/bunny_hair/queue.rb', line 52

def auto_delete?
  !!options[:auto_delete]
end

#bind(exchange, options = {}) ⇒ Object



16
17
18
19
# File 'lib/bunny_hair/queue.rb', line 16

def bind(exchange, options={})
  @exchange = exchange
  exchange.queues << self
end

#consumersObject



12
13
14
# File 'lib/bunny_hair/queue.rb', line 12

def consumers
  @consumers ||= []
end

#deleteObject



21
22
23
# File 'lib/bunny_hair/queue.rb', line 21

def delete
			@exchange.queues.delete_if { |q| q.name == name }
end

#popObject



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

#subscribe(opts = {}, &block) ⇒ Object



29
30
31
32
33
34
# File 'lib/bunny_hair/queue.rb', line 29

def subscribe(opts = {}, &block)
  consumer = Consumer.new(self)
  consumer.on_delivery(&block)

  consumer
end