1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
module AMQP
module Callbacks
def redefine_callback(event, callable = nil, &block)
f = (callable || block)
# yes, re-assign!
@callbacks[event] = [f]
self
end
def define_callback(event, callable = nil, &block)
f = (callable || block)
@callbacks[event] ||= []
@callbacks[event] << f if f
self
end # define_callback(event, &block)
alias append_callback define_callback
def prepend_callback(event, &block)
@callbacks[event] ||= []
@callbacks[event].unshift(block)
self
end # prepend_callback(event, &block)
def clear_callbacks(event)
@callbacks[event].clear if @callbacks[event]
end # clear_callbacks(event)
def exec_callback(name, *args, &block)
list = Array(@callbacks[name])
if list.any?
list.each { |c| c.call(*args, &block) }
end
end
def exec_callback_once(name, *args, &block)
list = (@callbacks.delete(name) || Array.new)
if list.any?
list.each { |c| c.call(*args, &block) }
end
end
def exec_callback_yielding_self(name, *args, &block)
list = Array(@callbacks[name])
if list.any?
list.each { |c| c.call(self, *args, &block) }
end
end
def exec_callback_once_yielding_self(name, *args, &block)
list = (@callbacks.delete(name) || Array.new)
if list.any?
list.each { |c| c.call(self, *args, &block) }
end
end
def has_callback?(name)
@callbacks[name] && !@callbacks[name].empty?
end # has_callback?
end # Callbacks
end
|