File: callbacks.rb

package info (click to toggle)
ruby-amqp 1.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 2,508 kB
  • sloc: ruby: 8,272; sh: 11; makefile: 10
file content (67 lines) | stat: -rw-r--r-- 1,593 bytes parent folder | download | duplicates (2)
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