Module: SignalEmitter

Included in:
EventLoop, EventLoop::Timer, EventLoop::Watchable, SignalEmitterTest::X
Defined in:
lib/puppet/external/event-loop/signal-system.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(includer) ⇒ Object



65
66
67
# File 'lib/puppet/external/event-loop/signal-system.rb', line 65

def self.included (includer)
  includer.extend SignalEmitterClass if not includer.kind_of? SignalEmitterClass
end

Instance Method Details

#__maybe_initialize_signal_emitterObject



69
70
71
72
# File 'lib/puppet/external/event-loop/signal-system.rb', line 69

def __maybe_initialize_signal_emitter
  @signal_handlers ||= Hash.new { |h, k| h[k] = Array.new }
  @allow_dynamic_signals ||= false
end

#__signal__(name, *args, &block) ⇒ Object



89
90
91
92
93
94
95
96
97
98
# File 'lib/puppet/external/event-loop/signal-system.rb', line 89

def __signal__ (name, *args, &block)
  __maybe_initialize_signal_emitter
  respond_to? "on_#{name}" or allow_dynamic_signals? or
  fail "undefined signal `#{name}' for #{self}:#{self.class}"
  __send__("handle_#{name}", *args, &block) if
    respond_to? "handle_#{name}"
  @signal_handlers[name].each { |x| x.call(*args, &block) }
  __send__("after_handle_#{name}", *args, &block) if
    respond_to? "after_handle_#{name}"
end

#add_signal_handler(name, &handler) ⇒ Object



76
77
78
79
80
# File 'lib/puppet/external/event-loop/signal-system.rb', line 76

def add_signal_handler (name, &handler)
  __maybe_initialize_signal_emitter
  @signal_handlers[name] << handler
  handler
end

#remove_signal_handler(name, handler) ⇒ Object



84
85
86
87
# File 'lib/puppet/external/event-loop/signal-system.rb', line 84

def remove_signal_handler (name, handler)
  __maybe_initialize_signal_emitter
  @signal_handlers[name].delete(handler)
end