Module SignalObserver
In: lib/puppet/external/event-loop/signal-system.rb

This module is indended to be a convenience mixin to be used by classes whose objects need to observe foreign signals. That is, if you want to observe some signals coming from an object, you should mix in this module.

You cannot use this module at two different places of the same inheritance chain to observe signals coming from the same object.

XXX: This has not seen much use, and I‘d like to provide a

     better solution for the problem in the future.

Methods

Public Instance methods

[Source]

     # File lib/puppet/external/event-loop/signal-system.rb, line 116
116:   def __maybe_initialize_signal_observer
117:     @observed_signals ||= Hash.new do |signals, object|
118:       signals[object] = Hash.new do |handlers, name|
119:         handlers[name] = Array.new
120:       end
121:     end
122:   end

[Source]

     # File lib/puppet/external/event-loop/signal-system.rb, line 138
138:   def absorb_signals (subject, *names)
139:     names.each do |name|
140:       observe_signal(subject, name) do |*args|
141:         __signal__(name, *args)
142:       end
143:     end
144:   end

[Source]

     # File lib/puppet/external/event-loop/signal-system.rb, line 150
150:   def ignore_signal (subject, name)
151:     __maybe_initialize_signal_observer
152:     __ignore_signal_1(subject, name)
153:     @observed_signals.delete(subject) if
154:       @observed_signals[subject].empty?
155:   end

[Source]

     # File lib/puppet/external/event-loop/signal-system.rb, line 157
157:   def ignore_signals (subject, *names)
158:     __maybe_initialize_signal_observer
159:     names = @observed_signals[subject] if names.empty?
160:     names.each { |x| __ignore_signal_1(subject, x) }
161:   end

[Source]

     # File lib/puppet/external/event-loop/signal-system.rb, line 130
130:   def map_signals (source, pairs={})
131:     pairs.each do |src_name, dst_name|
132:       observe_signal(source, src_name) do |*args|
133:         __signal__(dst_name, *args)
134:       end
135:     end
136:   end

[Source]

     # File lib/puppet/external/event-loop/signal-system.rb, line 124
124:   def observe_signal (subject, name, &handler)
125:     __maybe_initialize_signal_observer
126:     @observed_signals[subject][name] << handler
127:     subject.add_signal_handler(name, &handler)
128:   end

[Validate]