Sha256: 0fa536621a2f17668bd49ffc79062ae24167830a0a35aa3bc826923e04aaa267

Contents?: true

Size: 1.71 KB

Versions: 9

Compression:

Stored size: 1.71 KB

Contents

module AMQ
  module Client
    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(self.callbacks[name])
        if list.any?
          list.each { |c| c.call(*args, &block) }
        end
      end

      def exec_callback_once(name, *args, &block)
        list = (self.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(self.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 = (self.callbacks.delete(name) || Array.new)

        if list.any?
          list.each { |c| c.call(self, *args, &block) }
        end
      end

      def has_callback?(name)
        self.callbacks[name] && !self.callbacks[name].empty?
      end # has_callback?
    end # Callbacks
  end # Client
end # AMQ

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
amq-client-0.7.0.alpha34 lib/amq/client/callbacks.rb
amq-client-0.7.0.alpha33 lib/amq/client/callbacks.rb
amq-client-0.7.0.alpha32 lib/amq/client/callbacks.rb
amq-client-0.7.0.alpha31 lib/amq/client/callbacks.rb
amq-client-0.7.0.alpha30 lib/amq/client/callbacks.rb
amq-client-0.7.0.alpha29 lib/amq/client/callbacks.rb
amq-client-0.7.0.alpha28 lib/amq/client/callbacks.rb
amq-client-0.7.0.alpha27 lib/amq/client/callbacks.rb
amq-client-0.7.0.alpha26 lib/amq/client/callbacks.rb