Module: SignalEmitterModule
- Defined in:
- lib/puppet/external/event-loop/signal-system.rb
Class Method Summary collapse
Instance Method Summary collapse
- #define_signal(name, slot = :before, &body) ⇒ Object
- #define_signal_handler(name, slot = :before, &body) ⇒ Object
- #define_signals(*names, &body) ⇒ Object
Class Method Details
.extended(object) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/puppet/external/event-loop/signal-system.rb', line 23 def self.extended (object) if object.kind_of? Module and not object < SignalEmitter if object.respond_to? :fcall # This is the way to call private methods # in Ruby 1.9 as of November 16. object.fcall :include, SignalEmitter else object.__send__ :include, SignalEmitter end end end |
Instance Method Details
#define_signal(name, slot = :before, &body) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/puppet/external/event-loop/signal-system.rb', line 35 def define_signal (name, slot=:before, &body) # Can't use `define_method' and take a block pre-1.9. class_eval %{ def on_#{name} &block add_signal_handler(:#{name}, &block) end } define_signal_handler(name, :before, &lambda {|*a|}) define_signal_handler(name, :after, &lambda {|*a|}) define_signal_handler(name, slot, &body) if block_given? end |
#define_signal_handler(name, slot = :before, &body) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/puppet/external/event-loop/signal-system.rb', line 48 def define_signal_handler (name, slot=:before, &body) case slot when :before define_protected_method "handle_#{name}", &body when :after define_protected_method "after_handle_#{name}", &body else raise ArgumentError, "invalid slot `#{slot.inspect}'; " + "should be `:before' or `:after'", caller(1) end end |
#define_signals(*names, &body) ⇒ Object
44 45 46 |
# File 'lib/puppet/external/event-loop/signal-system.rb', line 44 def define_signals (*names, &body) names.each { |x| define_signal(x, &body) } end |