class RabbitmqClient::Lifecycle

Lifecycle defines the rabbitmq_client lifecycle events, callbacks and manage the execution of these callbacks

Constants

EVENTS

Attributes

callbacks[R]

Public Class Methods

new() click to toggle source
# File lib/rabbitmq_client/lifecycle.rb, line 15
def initialize
  @callbacks = EVENTS.keys.each_with_object({}) do |key, hash|
    hash[key] = Callback.new
  end
end

Public Instance Methods

after(event, &block) click to toggle source
# File lib/rabbitmq_client/lifecycle.rb, line 25
def after(event, &block)
  add(:after, event, &block)
end
before(event, &block) click to toggle source
# File lib/rabbitmq_client/lifecycle.rb, line 21
def before(event, &block)
  add(:before, event, &block)
end
run_callbacks(event, *args, &block) click to toggle source
# File lib/rabbitmq_client/lifecycle.rb, line 29
def run_callbacks(event, *args, &block)
  missing_callback(event) unless @callbacks.key?(event)
  event_obj = EVENTS[event]
  event_size = event_obj.size

  unless event_size == args.size
    raise ArgumentError, "Callback #{event} expects\
     #{event_size} parameter(s): #{event_obj.join(', ')}"
  end

  @callbacks[event].execute(*args, &block)
end

Private Instance Methods

add(type, event, &block) click to toggle source
# File lib/rabbitmq_client/lifecycle.rb, line 44
def add(type, event, &block)
  missing_callback(event) unless @callbacks.key?(event)
  @callbacks[event].add(type, &block)
end
missing_callback(event) click to toggle source
# File lib/rabbitmq_client/lifecycle.rb, line 49
def missing_callback(event)
  raise InvalidCallback, "Unknown callback event: #{event}"
end