Sha256: 523f327be487788cb16bee251f0f39d4693de94b51fe2eb61bea5f586d285d88

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 KB

Contents

module AMQ
  module Client
    module Async
      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 # Async
  end # Client
end # AMQ

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
amq-client-0.7.0.alpha35 lib/amq/client/async/callbacks.rb